opencv_webcam/README.md

14 KiB
Raw Permalink Blame History

中文简体|English

Simple Icons

基于OpenCV的Webcam程序适用于计算机视觉数据采集实时视频帧收集等。

具有安装便捷、操作简单、跨平台等特点。

code check PyPi Releases Version Docker Jupyter License

🚀更新走势

💎项目用途

🔥 快速制作目标检测数据集

📌 项目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