21 Star 221 Fork 79

CV_Lab/OpenCV-Webcam

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
ows_jupyter.ipynb 25.78 KB
一键复制 编辑 原始数据 按行查看 历史
代码阿尔法 提交于 3年前 . v1.0 update

🔥 opencv-webcam-script v0.9(Jupyter版)

创建人:曾逸夫

创建时间:2022-07-26

code check Releases Version PyPI Docker Podman Jupyter License

Code Security Python Version PyPI Package Health security bandit Imports: isort flake8

star fork Docker Pulls PyPI All Downloads

🚀 安装教程

📌 克隆、安装依赖

# 首先手动创建虚拟环境
# conda create -n ows python==3.8 # 虚拟环境名称为ows
# conda activate ows # 激活虚拟环境
# 克隆
!git clone https://gitee.com/CV_Lab/opencv_webcam.git
%cd opencv_webcam
# 安装
%pip install -qr requirements.txt -U
%pip install ipywidgets jupyterlab_code_formatter black isort -U

❗ 注意:安装完成后,将ows_jupyter.ipynb放入opencv_webcam目录中进行下面的操作

🔥 UI版

%matplotlib inline

from ipywidgets import (
    BoundedIntText,
    Checkbox,
    Dropdown,
    FloatSlider,
    IntRangeSlider,
    IntSlider,
    IntText,
    Text,
    ToggleButtons,
    interact_manual,
    interactive,
)

from opencv_webcam import webcam_opencv

# -------------------------------组件设置-------------------------------
device_index = Text(
    value="0", placeholder="0,1,2 or RTSP", disabled=False, description="设备编号:"
)
quit_key = Text(value="q", placeholder="退出键", disabled=False, description="退出键:")
pause_key = Text(value="p", placeholder="暂停键", disabled=False, description="暂停键:")
is_autoSaveFrame = Checkbox(
    value=False, disabled=False, indent=False, description="自动保存帧:"
)
frame_saveDir = Text(
    value="WebcamFrame", placeholder="帧保存路径", disabled=False, description="帧保存路径:"
)
frame_dirName = Text(
    value="frames", placeholder="帧目录名称", disabled=False, description="帧目录名称:"
)
frame_nSave = BoundedIntText(
    value=1, min=1, step=1, description="n帧保存一次:", disabled=False
)
auto_frameNum = BoundedIntText(
    value=0, min=0, step=1, description="帧最大数:", disabled=False
)
is_handSaveFrame = Checkbox(
    value=False, disabled=False, indent=False, description="手动保存帧:"
)
frame_capKey = Text(value="a", placeholder="帧捕获键", disabled=False, description="帧捕获键:")
is_resizeFrame = Checkbox(value=False, disabled=False, indent=False, description="重塑帧:")
resize_frame = Text(
    value="640,480", placeholder="重塑帧", disabled=False, description="自定义帧尺寸:"
)
resizeRatio_frame = FloatSlider(
    min=0.0,
    max=1.0,
    value=1.0,
    step=0.1,
    continuous_update=False,
    description="自定义帧缩放比:",
    orientation="horizontal",
    readout=True,
    readout_format=".1f",
)
frame_namePrefix = Text(
    value="frame", placeholder="帧名前缀", disabled=False, description="帧前缀:"
)
frame_saveStyle = Text(
    value="jpg", placeholder="jpg or png", disabled=False, description="帧保存类型:"
)
jpg_quality = IntSlider(
    min=0,
    max=100,
    value=95,
    step=1,
    continuous_update=False,
    description="jpg质量系数:",
    orientation="horizontal",
    readout=True,
    readout_format="d",
)
png_quality = IntSlider(
    min=0,
    max=9,
    value=3,
    step=1,
    continuous_update=False,
    description="png质量系数:",
    orientation="horizontal",
    readout=True,
    readout_format="d",
)
# 日志管理
logName = Text(value="ows.log", placeholder="日志名称", disabled=False, description="日志名称:")
logMode = Text(value="a", placeholder="日志模式", disabled=False, description="日志模式:")
# 帧压缩
is_compress = Checkbox(value=False, disabled=False, indent=False, description="压缩帧")
compressStyle = Text(
    value="zip", placeholder="压缩类型", disabled=False, description="压缩类型:"
)
is_autoCompressName = Checkbox(
    value=False, disabled=False, indent=False, description="自动压缩命名:"
)
compressName = Text(
    value="ows", placeholder="压缩名称", disabled=False, description="压缩名称:"
)
compressMode = Text(value="w", placeholder="压缩模式", disabled=False, description="压缩模式:")
# 去除背景色
is_rmbgColor = Checkbox(value=False, disabled=False, indent=False, description="去除背景色:")
rmbgColorMode = Text(
    value="green", placeholder="绿色", disabled=False, description="背景颜色模式"
)
# 调整窗体大小
is_resizeWindow = Checkbox(
    value=False, disabled=False, indent=False, description="调整窗体大小:"
)

# -------------------------------交互设置-------------------------------
interact_manual(
    webcam_opencv,
    device_index=device_index,
    quit_key=quit_key,
    pause_key=pause_key,
    is_autoSaveFrame=is_autoSaveFrame,
    frame_saveDir=frame_saveDir,
    frame_dirName=frame_dirName,
    frame_nSave=frame_nSave,
    auto_frameNum=auto_frameNum,
    is_handSaveFrame=is_handSaveFrame,
    frame_capKey=frame_capKey,
    is_resizeFrame=is_resizeFrame,
    resize_frame=resize_frame,
    resizeRatio_frame=resizeRatio_frame,
    frame_namePrefix=frame_namePrefix,
    frame_saveStyle=frame_saveStyle,
    jpg_quality=jpg_quality,
    png_quality=png_quality,
    logName=logName,
    logMode=logMode,
    is_compress=is_compress,
    compressStyle=compressStyle,
    is_autoCompressName=is_autoCompressName,
    compressName=compressName,
    compressMode=compressMode,
    is_rmbgColor=is_rmbgColor,
    rmbgColorMode=rmbgColorMode,
    is_resizeWindow=is_resizeWindow,
)

⚡ 使用教程

💡 常规调用

# 默认按q键退出
!python opencv_webcam.py

💡 设备选择

# 多摄像头切换示例,默认为0
!python opencv_webcam.py -dev 0
!python opencv_webcam.py -dev 1
!python opencv_webcam.py -dev 2
# RTSP
!python opencv_webcam.py -dev rtsp://username:password@xxx.xxx.xxx

💡 设置退出键

# 默认按q键退出
!python opencv_webcam.py -q z # 设置z键退出
!python opencv_webcam.py -q k # 设置k键退出

💡 自动保存帧

# 视频帧自动保存
!python opencv_webcam.py -isasf

💡 每隔n帧保存一次帧

# 每隔10帧保存一次帧
!python opencv_webcam.py -isasf -fns 10

💡 手动保存帧

# 默认按a键捕获一帧
!python opencv_webcam.py -ishsf

💡 自定义捕获键

# 设置z键为捕获键
!python opencv_webcam.py -ishsf -fck z

💡 重塑帧尺寸(自定义宽高)

# 重塑宽度300 高度200
!python opencv_webcam.py -isasf -isrf -rf 300,200 # 自动版,v0.5
!python opencv_webcam.py -ishsf -isrf -rf 300,200 # 手动版

💡 重塑帧尺寸(自定义宽高缩放比)

# 宽高缩放比为0.5
!python opencv_webcam.py -isasf -isrf -rrf 0.5 # 自动版
!python opencv_webcam.py -ishsf -isrf -rrf 0.5 # 手动版

💡 自定义保存路径

# 设置保存路径,默认保存路径为WebcamFrame
!python opencv_webcam.py -fsd custom_dir -isasf # 以自动版为例

💡 自定义帧目录名称

# 设置帧目录名称,默认保存路径为frames
!python opencv_webcam.py -fdn frames_custom -isasf # 以自动版为例

💡 自定义帧名前缀

# 设置帧图片的前缀名称
!python opencv_webcam.py -isasf -fnp webcam # 以自动版为例

💡 设置帧保存格式

# 设置JPG质量为100,默认为95
!python opencv_webcam.py -isasf -fss jpg -jq 100
# 设置PNG质量为5,默认为3
!python opencv_webcam.py -isasf -fss png -pq 5

💡 设置暂停键

# 设置w键为暂停键,默认为p键
!python opencv_webcam.py -p w # 按任意键继续

💡 设置保存帧数

# 设置保存100帧
!python opencv_webcam.py -isasf -afn 100

💡 调整窗体尺寸

# 手动调整窗体尺寸(v0.9)
!python opencv_webcam.py -isrw

💡 日志设置

# 日志文件默认保存在项目根目录,ows.log
!python opencv_webcam.py
# 设置日志文件名称及类型,类型包括.log、.txt、.data
!python opencv_webcam.py -ln ows.txt
# 设置日志保存方式,,默认为追加模式
!python opencv_webcam.py - lm w  # 设置为覆盖模式

💡 频帧压缩

# 常规压缩,默认ows.zip(以自动版为例)
!python opencv_webcam.py - isasf - isc
# 自定义压缩文件名称
!python opencv_webcam.py -isasf -isc -cn ows02
# 自动命名压缩文件
!python opencv_webcam.py -isasf -isc -isacn
# 自定义压缩模式,默认为写覆盖
!python opencv_webcam.py -isasf -isc -cs tar -cm w:gz # tar压缩
!python opencv_webcam.py -isasf -isc -cm a # 追加模式(a模式仅限zip) 注:该指令仅限v0.4

💡 去除背景色(抠绿、抠蓝)

# 去除背景色,默认为绿色
!python opencv_webcam.py -isasf -isrbgc
# 选择背景色模式
!python opencv_webcam.py -isasf -isrbgc -rbgcm green # 抠绿
!python opencv_webcam.py -isasf -isrbgc -rbgcm blue # 抠蓝

💡指令查询

# 查询脚本参数
!python opencv_webcam.py --help
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/CV_Lab/opencv_webcam.git
git@gitee.com:CV_Lab/opencv_webcam.git
CV_Lab
opencv_webcam
OpenCV-Webcam
master

搜索帮助