Skip to main content

webcam opencv script

Project description

中文简体|English

Simple Icons

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

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

code check Releases Version PyPI Docker Podman Jupyter License

pre-commit Python Version PyPI Package Health security bandit

star fork Docker Pulls PyPI All Downloads

🚀 作者简介

曾逸夫,从事人工智能研究与开发;主研领域:计算机视觉;YOLOv5官方开源项目代码贡献人YOLOv5 v6.1代码贡献人Gradio官方开源项目代码贡献人

❤️ Github:https://github.com/Zengyf-CVer

🔥 YOLOv5 官方开源项目PR ID:

💡 YOLOv5 v6.1代码贡献链接:

🔥 Gradio 官方开源项目PR ID:

🚀更新走势

💎项目用途

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

📌 项目1:基于YOLOv5的手势识别demo

💡项目结构

.
├── opencv_webcam							# 项目名称
│   ├── utils								# 工具包
│   │   ├── __init__.py						# 工具包初始化
│   │   ├── args_yaml.py					# 指令管理
│   │   ├── compress.py						# 压缩管理
│   │   ├── frame_opt.py					# 帧保存管理
│   │   ├── check_opt.py					# 检查管理
│   │   ├── fonts_opt.py					# 字体管理
│   │   ├── plot.py							# 作图管理
│   │   ├── rm_bgColor.py					# 图片背景管理
│   │   ├── log.py							# 日志管理
│   │   ├── path_opt.py						# 保存路径管理
│   │   ├── sys_opt.py						# 系统管理
│   │   └── time_format.py					# 时间格式化
│   ├── tutorial							# ows教程
│   │   ├── ows_bash.md						# ows Bash版教程
│   │   ├── ows_pypi.md						# ows PyPI版教程
│   │   ├── ows_docker.md					# ows docker版教程
│   │   ├── ows_podman.md					# ows Podman版教程
│   │   └── ows_jupyter.ipynb				# ows Jupyter版教程
│   ├── v_change							# 版本历史
│   │   ├── v01_v05_change.md				# v0.1-v0.5版本变更
│   │   ├── v06_change.md					# v0.6版本变更
│   │   ├── v07_change.md					# v0.7版本变更
│   │   ├── v08_change.md					# v0.8版本变更
│   │   └── README.md						# 版本历史说明
│   ├── __init__.py							# 项目初始化
│   ├── opencv_webcam.py					# 脚本主运行文件
│   ├── LICENSE								# 项目许可
│   ├── CodeCheck.md						# 代码检查
│   ├── CodeSecurity.md						# 代码安全检测
│   ├── setup.sh							# 环境安装脚本
│   ├── fonts.sh							# 字体下载脚本
│   ├── Dockerfile							# docker构建文件
│   ├── setup.cfg							# pre-commit CI检查源配置文件
│   ├── .pre-commit-config.yaml				# pre-commit配置文件
│   ├── .gitignore							# git忽略文件
│   ├── .dockerignore						# docker忽略文件
│   ├── GestureData_yolov5.md				# Gesture&YOLOv5 demo
│   ├── README.md							# 项目说明
│   ├── README.en.md						# 项目说明(英文版)
│   └── requirements.txt					# 脚本依赖包

🔥安装教程

❤️ OWS提供了5种安装方法。点击下面对应的logo,了解详细的安装与使用教程。

✅ 方法一:Linux Shell安装(开发版)

🔥 opencv-webcam-script Bash版 详细教程

📌 第一步:克隆项目

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 --upgrade pip # 升级pip
pip install -r ./requirements.txt -U # 安装OpenCV Webcam脚本

📌 第二步和第三步也可以通过setup.sh 执行

bash ./setup.sh

❗ 注意:OWS v0.6 以上的版本需要在Python>=3.8.0 的环境下运行

✅ 方法二:pip 快速安装(PyPI版)

🔥 opencv-webcam-script PyPI版 详细教程

🎨 简易教程

📌 第一步:创建ows虚拟环境,参见方法一

📌 第二步:执行pip指令

pip install opencv-webcam-script==0.9.0

📌 第三步:编写python程序

from opencv_webcam.opencv_webcam import webcam_opencv

# ------------例举几个功能------------
webcam_opencv()  # 常规调用
webcam_opencv(is_autoSaveFrame=True)  # 自动保存帧
webcam_opencv(is_autoSaveFrame=True, is_compress=True)  # 压缩帧

❗ 注意:==后面一定要加版本号。如果执行pip install opencv-webcam-script 可能安装为测试版,会影响使用。

✅ 方法三:docker 镜像安装(docker版)

🔥 opencv-webcam-script docker版 详细教程

🎨 简易教程

📌 第一步:下载镜像

sudo docker pull zengdockerdocker/opencv-webcam-script:v0.9 # 镜像拉取

📌 第二步:创建容器

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.9

📌 第三步:运行程序

python opencv_webcam.py # 运行脚本程序
python opencv_webcam.py -isasf # 自动保存帧

# 获取docker帧数据到本机
sudo docker cp 容器名称:容器目录 本机宿主目录
sudo docker cp ows:/usr/src/app/WebcamFrame /home/用户名 # 举例

❗ 注意:启动ows容器前,需要执行xhost +local:root 指令,确保连接到本地设备。

✅ 方法四:Podman 安装(Podman版)

🔥 opencv-webcam-script Podman版 详细教程

🎨 简易教程

📌 第一步:下载镜像

sudo podman pull docker.io/zengdockerdocker/opencv-webcam-script:v0.9 # 镜像拉取

📌 第二步:创建容器

xhost +local:root # 允许root用户访问正在运行的X服务器(重要)
# 创建名称为ows的容器
sudo podman run --name=ows --ipc=host -it -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY --device=/dev/video0:/dev/video0 docker.io/zengdockerdocker/opencv-webcam-script:v0.9

📌 第三步:运行程序

python opencv_webcam.py # 运行脚本程序
python opencv_webcam.py -isasf # 自动保存帧

# 获取Podman帧数据到本机
sudo podman cp 容器名称:容器目录 本机宿主目录
sudo podman cp ows:/usr/src/app/WebcamFrame /home/用户名 # 举例

❗ 注意:启动ows容器前,需要执行xhost +local:root 指令,确保连接到本地设备。

✅ 方法五: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  # 安装

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

📌 第二步:运行

!python opencv_webcam.py # 默认按q键退出
!python opencv_webcam.py -isasf # 视频帧自动保存

注:Jupyter版ows程序通过Ctrl+Enter 即可运行单元指令

⚡使用教程

❤️ OWS v0.9 Bash Shell显示信息高度集成rich组件

OWS v0.9 Bash Shell显示信息

💡 常规启动

# 启动ows程序
python opencv_webcam.py

❗ 提示:启动ows程序后,首先进入倒计时模式,有150帧倒计时准备时间,会提示用户将设备调整到合适的位置,准备开始。

💡 设备选择

# 多摄像头切换示例,默认为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"

❗ 注意:进行RTSP操作时,尽可能在Linux Shell中将RTSP地址用双引号标注。

💡 设置退出键

# 默认按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

💡 调整窗体尺寸

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

💡 日志设置

# 日志文件默认保存在项目根目录,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 -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 # 抠蓝

❗ 注意:为了达到去除背景色的最佳效果,背景色尽量不要混入白光,尽可能使背景色保持高的饱和度。

💡 日期-帧数图

❤️ 该功能在每次运行OWS程序时,根据date_time_frames.csv文件会自动生成日期-帧数图

✨ 操作示例

📌 运行指令

python opencv_webcam.py -isasf -fdn tiger
python opencv_webcam.py -isasf -fdn lion
python opencv_webcam.py -isasf -fdn elephant

📌 日期-帧数图目录结构

.
├── opencv_webcam							# 项目名称   ├── DateFrames							# 日期-帧数图目录      ├── 2022-02-21						# 日期目录         ├── lion.png					# lion类别日期-帧数图         ├── elephant.png				# elephant类别日期-帧数图         └── tiger.png					# tiger类别日期-帧数图   ├── date_time_frames.csv				# 日期-帧数图日志   ├── ....								# 其他文件
📌 date_time_frames.csv日志文件
2022-02-21 07:48:41,58,lion,WebcamFrame
2022-02-21 07:49:52,68,lion,WebcamFrame
2022-02-21 07:50:59,37,tiger,WebcamFrame
2022-02-21 07:51:14,59,elephant,WebcamFrame
2022-02-21 07:51:30,72,tiger,WebcamFrame
2022-02-21 07:51:42,116,lion,WebcamFrame
2022-02-21 07:51:54,127,elephant,WebcamFrame
2022-02-21 07:52:16,122,elephant,WebcamFrame
2022-02-21 07:52:27,106,lion,WebcamFrame
2022-02-21 07:52:38,127,tiger,WebcamFrame
2022-02-21 07:53:00,78,elephant,WebcamFrame
2022-02-21 07:53:10,107,tiger,WebcamFrame
2022-02-21 07:53:21,95,lion,WebcamFrame
2022-02-21 07:53:42,59,lion,WebcamFrame
2022-02-21 07:53:50,74,tiger,WebcamFrame
2022-02-21 07:53:59,97,elephant,WebcamFrame
2022-02-21 07:54:58,125,elephant,WebcamFrame
2022-02-21 07:55:11,79,lion,WebcamFrame
2022-02-21 07:55:20,110,tiger,WebcamFrame
2022-02-21 07:55:29,146,tiger,WebcamFrame
2022-02-21 07:55:55,50,tiger,WebcamFrame
2022-02-21 07:56:02,153,lion,WebcamFrame
2022-02-21 07:56:16,108,elephant,WebcamFrame
2022-02-21 07:56:38,121,tiger,WebcamFrame

📌 lion.png
📌 elephant.png
📌 tiger.png

💡 指令查询

# 查询脚本参数
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] [--is_rmbgColor] [--rmbgColorMode RMBGCOLORMODE] [--is_resizeWindow]

OpenCV Webcam Script v0.9

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
  --is_rmbgColor, -isrbgc
                        is remove background color
  --rmbgColorMode RMBGCOLORMODE, -rbgcm RMBGCOLORMODE
                        remove background color mode
  --is_resizeWindow, -isrw
                        is resize window

💬 技术交流

  • 如果你发现任何OpenCV Webcam Script存在的问题或者是建议, 欢迎通过Gitee Issues给我提issues。
  • 欢迎加入CV Lab技术交流群

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

opencv-webcam-script-0.9.1.tar.gz (40.8 kB view details)

Uploaded Source

Built Distribution

opencv_webcam_script-0.9.1-py3-none-any.whl (39.6 kB view details)

Uploaded Python 3

File details

Details for the file opencv-webcam-script-0.9.1.tar.gz.

File metadata

  • Download URL: opencv-webcam-script-0.9.1.tar.gz
  • Upload date:
  • Size: 40.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.64.0 importlib-metadata/4.11.2 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.0

File hashes

Hashes for opencv-webcam-script-0.9.1.tar.gz
Algorithm Hash digest
SHA256 2b532eb95c549c041c33d93f25229d94f2f2e07fcd75bea02c08cb51bed6abb4
MD5 a8732e67e68e05871a61b4ab0dfb1c37
BLAKE2b-256 e27d15eaa25003180e3c1d3478b8d96809807d6a7edeb6853571ca8db28223cb

See more details on using hashes here.

File details

Details for the file opencv_webcam_script-0.9.1-py3-none-any.whl.

File metadata

  • Download URL: opencv_webcam_script-0.9.1-py3-none-any.whl
  • Upload date:
  • Size: 39.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.64.0 importlib-metadata/4.11.2 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.0

File hashes

Hashes for opencv_webcam_script-0.9.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4ea6437eb00899a0a3e6547c847511abcb72ec15fd7e5350a63f9507be0b7fdf
MD5 33b8b3c134ec2f363d762fa6572a8f7d
BLAKE2b-256 ad38672979630f8f0c985f130b4b332c568d1f3a6611c47c39594a9dd26cf54d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page