14 KiB
14 KiB
中文简体|English
基于OpenCV的Webcam程序,适用于计算机视觉数据采集,实时视频帧收集等。
具有安装便捷、操作简单、跨平台等特点。
🚀更新走势
2022-02-06
⚡ opencv-webcam-script v0.5 发行版正式上线2022-02-06
⚡ opencv-webcam-script v0.5 docker版正式上线2022-02-06
⚡ opencv-webcam-script v0.5.1 PyPi版正式上线2022-02-06
⚡ opencv-webcam-script v0.5 Jupyter版正式上线- ⚡ opencv-webcam-script 历史版本
💎项目用途
🔥 快速制作目标检测数据集
📌 项目1:基于YOLOv5的手势识别demo
💡项目结构
.
├── opencv_webcam # 项目名称
│ ├── utils # 工具包
│ │ ├── args_yaml.py # 指令管理
│ │ ├── compress.py # 压缩管理
│ │ ├── frame_opt.py # 帧保存管理
│ │ ├── hotkey.py # 热键管理
│ │ ├── fonts_opt.py # 字体管理
│ │ ├── plot.py # 作图管理
│ │ ├── __init__.py # 工具包初始化
│ │ ├── log.py # 日志管理
│ │ ├── ows_path.py # 保存路径管理
│ │ └── time_format.py # 时间格式化
│ ├── tutorial # ows教程
│ │ ├── ows_pypi.md # ows pypi版教程
│ │ ├── ows_docker.md # ows docker版教程
│ │ └── ows_jupyter.ipynb # ows Jupyter版教程
│ ├── v_change # 版本历史
│ │ ├── v01_change.md # v0.1版本变更
│ │ ├── v02_change.md # v0.2版本变更
│ │ ├── v03_change.md # v0.3版本变更
│ │ ├── v04_change.md # v0.4版本变更
│ │ └── README.md # 版本历史说明
│ ├── __init__.py # 项目初始化
│ ├── opencv_webcam.py # 脚本主运行文件
│ ├── LICENSE # 项目许可
│ ├── CodeCheck.md # 代码检查
│ ├── setup.sh # 环境安装脚本
│ ├── fonts.sh # 字体下载脚本
│ ├── Dockerfile # docker构建文件
│ ├── .gitignore # git忽略文件
│ ├── .dockerignore # docker忽略文件
│ ├── GestureData_yolov5.md # Gesture&YOLOv5 demo
│ ├── README.md # 项目说明
│ ├── README.en.md # 项目说明(英文版)
│ └── requirements.txt # 脚本依赖包
🔥安装教程
✅ 方法一:Linux Shell安装(开发版)
📌 第一步:克隆项目
git clone https://gitee.com/CV_Lab/opencv_webcam.git # 克隆项目
📌 第二步:创建虚拟环境
# 创建conda虚拟环境,以python 3.8为例
conda create -n ows python==3.8 # 虚拟环境名称为ows
conda activate ows # 激活虚拟环境
📌 第三步:安装脚本
pip install -r ./requirements.txt -U # 安装OpenCV Webcam脚本
📌 第二步和第三步也可以通过setup.sh 执行
bash ./setup.sh
✅ 方法二:pip 快速安装(PyPi版)
🔥 opencv-webcam-script PyPi版 详细教程
🎨 简易教程
📌 第一步:创建ows虚拟环境,参见方法一
📌 第二步:执行pip指令
pip install opencv-webcam-script==0.5.1
📌 第三步:编写python程序
from opencv_webcam.opencv_webcam import webcam_opencv
# ------------例举几个功能------------
webcam_opencv() # 常规调用
webcam_opencv(is_autoSaveFrame=True) # 自动保存帧
webcam_opencv(is_autoSaveFrame=True, is_compress=True) # 压缩帧
✅ 方法三:docker 镜像安装(docker版)
🔥 opencv-webcam-script docker版 详细教程
🎨 简易教程
📌 第一步:下载镜像
sudo docker pull zengdockerdocker/opencv-webcam-script:v0.5 # 镜像拉取
📌 第二步:创建容器
xhost +local:root # 允许root用户访问正在运行的X服务器(重要)
# 创建名称为ows的容器
sudo docker run --name=ows --ipc=host -it -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY --device=/dev/video0:/dev/video0 zengdockerdocker/opencv-webcam-script:v0.5
📌 第三步:运行程序
python3 opencv_webcam.py # 运行脚本程序
python3 opencv_webcam.py -isasf # 自动保存帧
# 获取docker帧数据到本机
sudo docker cp 容器名称:容器目录 本机宿主目录
sudo docker cp ows:/usr/src/app/WebcamFrame /home/用户名 # 举例
✅ 方法四:Jupyter 安装(Jupyter版)
🔥 opencv-webcam-script Jupyter版 详细教程
🎨 简易教程
📌 第一步:安装
# 首先手动创建虚拟环境
# 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 # 安装
📌 第二步:运行
!python opencv_webcam.py # 默认按q键退出
!python opencv_webcam.py -isasf # 视频帧自动保存
注:Jupyter版ows程序通过Ctrl+Enter
即可运行单元指令
⚡使用教程
💡 常规调用
# 默认按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键为捕获键,默认为a键
python opencv_webcam.py -ishsf -fck z
💡 重塑帧尺寸(自定义宽高)
# 重塑宽度300 高度200
python opencv_webcam.py -isasf -isrf -rf 300,200 # 自动版
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
💡 日志设置
# 日志文件默认保存在项目根目录,ows.log
python opencv_webcam.py
# 设置日志文件名称及类型,类型包括.log、.txt、.data
python opencv_webcam.py -ln ows02.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 -cm a # 追加模式(a模式仅限zip) 注:该指令仅限v0.4
python opencv_webcam.py -isasf -isc -cs tar -cm w:gz # tar压缩
💡 日期-帧数图
该功能每次运行脚本时,程序会根据date_time_frames.csv
文件自动生成日期-帧数图
。
💡 指令查询
# 查询脚本参数
python opencv_webcam.py --help
指令查询结果
usage: opencv_webcam.py [-h] [--device DEVICE] [--quit QUIT] [--is_autoSaveFrame] [--is_handSaveFrame] [--is_resizeFrame] [--frame_saveDir FRAME_SAVEDIR] [--frame_dirName FRAME_DIRNAME]
[--frame_nSave FRAME_NSAVE] [--frame_capKey FRAME_CAPKEY] [--resize_frame RESIZE_FRAME] [--resizeRatio_frame RESIZERATIO_FRAME] [--frame_namePrefix FRAME_NAMEPREFIX]
[--frame_saveStyle FRAME_SAVESTYLE] [--jpg_quality JPG_QUALITY] [--png_quality PNG_QUALITY] [--pause PAUSE] [--auto_frameNum AUTO_FRAMENUM] [--logName LOGNAME]
[--logMode LOGMODE] [--is_compress] [--compressStyle COMPRESSSTYLE] [--is_autoCompressName] [--compressName COMPRESSNAME] [--compressMode COMPRESSMODE]
OpenCV Webcam Script v0.5
optional arguments:
-h, --help show this help message and exit
--device DEVICE, -dev DEVICE
device index for webcam, 0 or rtsp
--quit QUIT, -q QUIT quit key for webcam
--is_autoSaveFrame, -isasf
is auto save frame
--is_handSaveFrame, -ishsf
is hand save frame
--is_resizeFrame, -isrf
is resize frame
--frame_saveDir FRAME_SAVEDIR, -fsd FRAME_SAVEDIR
save frame dir
--frame_dirName FRAME_DIRNAME, -fdn FRAME_DIRNAME
save frame dir name
--frame_nSave FRAME_NSAVE, -fns FRAME_NSAVE
n frames save a frame (auto save frame)
--frame_capKey FRAME_CAPKEY, -fck FRAME_CAPKEY
frame capture key (hand save frame)
--resize_frame RESIZE_FRAME, -rf RESIZE_FRAME
resize frame save
--resizeRatio_frame RESIZERATIO_FRAME, -rrf RESIZERATIO_FRAME
resize ratio frame save
--frame_namePrefix FRAME_NAMEPREFIX, -fnp FRAME_NAMEPREFIX
frame name prefix
--frame_saveStyle FRAME_SAVESTYLE, -fss FRAME_SAVESTYLE
frame save style
--jpg_quality JPG_QUALITY, -jq JPG_QUALITY
frame save jpg quality (0-100) default 95
--png_quality PNG_QUALITY, -pq PNG_QUALITY
frame save jpg quality (0-9) default 3
--pause PAUSE, -p PAUSE
webcam pause
--auto_frameNum AUTO_FRAMENUM, -afn AUTO_FRAMENUM
auto save number of frames
--logName LOGNAME, -ln LOGNAME
log save name
--logMode LOGMODE, -lm LOGMODE
log write mode
--is_compress, -isc is compress file
--compressStyle COMPRESSSTYLE, -cs COMPRESSSTYLE
compress style
--is_autoCompressName, -isacn
is auto compress name
--compressName COMPRESSNAME, -cn COMPRESSNAME
compress save name
--compressMode COMPRESSMODE, -cm COMPRESSMODE
compress save mode, tar w:gz