Package: opencv-webcam-script
中文简体|English基于OpenCV的Webcam程序，适用于计算机视觉数据采集，实时视频帧收集等。具有安装便捷、操作简单、跨平台等特点。🚀 作者简介曾逸夫，从事人工智能研究与开发；主研领域：计算机视觉；YOLOv5官方开源项目代码贡献人；YOLOv5 v6.1代码贡献人；Gradio官方开源项目代码贡献人❤️  Github：https://github.com/Zengyf-CVer🔥 YOLOv5 官方开源项目PR ID：Save *.npy features on detect.py--visualize：https://github.com/ultralytics/yolov5/pull/5701Fixdetect.py --view-imgfor non-ASCII paths：https://github.com/ultralytics/yolov5/pull/7093Fix Flask REST API：https://github.com/ultralytics/yolov5/pull/7210Add yesqa to precommit checks：https://github.com/ultralytics/yolov5/pull/7511Add mdformat to precommit checks and update other version：https://github.com/ultralytics/yolov5/pull/7529Add TensorRT dependencies：https://github.com/ultralytics/yolov5/pull/8553💡 YOLOv5 v6.1代码贡献链接：https://github.com/ultralytics/yolov5/releases/tag/v6.1🔥 Gradio 官方开源项目PR ID：Create a color generator demo：https://github.com/gradio-app/gradio/pull/1872🚀更新走势2022-07-26⚡opencv-webcam-script v0.9 Jupyter版正式上线⚡opencv-webcam-script 历史版本💎项目用途🔥 快速制作目标检测数据集📌 项目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版 详细教程📌 第一步：克隆项目gitclonehttps://gitee.com/CV_Lab/opencv_webcam.git# 克隆项目📌 第二步：创建虚拟环境# 创建conda虚拟环境，以python 3.8为例condacreate-nowspython==3.8# 虚拟环境名称为owscondaactivateows# 激活虚拟环境📌 第三步：安装脚本pipinstall--upgradepip# 升级pippipinstall-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指令pipinstallopencv-webcam-script==0.9.0📌 第三步：编写python程序fromopencv_webcam.opencv_webcamimportwebcam_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版 详细教程🎨 简易教程📌 第一步：下载镜像sudodockerpullzengdockerdocker/opencv-webcam-script:v0.9# 镜像拉取📌 第二步：创建容器xhost+local:root# 允许root用户访问正在运行的X服务器（重要）# 创建名称为ows的容器sudodockerrun--name=ows--ipc=host-it-v/tmp/.X11-unix:/tmp/.X11-unix-eDISPLAY=unix$DISPLAY--device=/dev/video0:/dev/video0zengdockerdocker/opencv-webcam-script:v0.9📌 第三步：运行程序pythonopencv_webcam.py# 运行脚本程序pythonopencv_webcam.py-isasf# 自动保存帧# 获取docker帧数据到本机sudodockercp容器名称:容器目录本机宿主目录
sudodockercpows:/usr/src/app/WebcamFrame/home/用户名# 举例❗ 注意：启动ows容器前，需要执行xhost +local:root指令，确保连接到本地设备。✅ 方法四：Podman 安装（Podman版）🔥opencv-webcam-script Podman版 详细教程🎨 简易教程📌 第一步：下载镜像sudopodmanpulldocker.io/zengdockerdocker/opencv-webcam-script:v0.9# 镜像拉取📌 第二步：创建容器xhost+local:root# 允许root用户访问正在运行的X服务器（重要）# 创建名称为ows的容器sudopodmanrun--name=ows--ipc=host-it-v/tmp/.X11-unix:/tmp/.X11-unix-eDISPLAY=unix$DISPLAY--device=/dev/video0:/dev/video0docker.io/zengdockerdocker/opencv-webcam-script:v0.9📌 第三步：运行程序pythonopencv_webcam.py# 运行脚本程序pythonopencv_webcam.py-isasf# 自动保存帧# 获取Podman帧数据到本机sudopodmancp容器名称:容器目录本机宿主目录
sudopodmancpows:/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 # 激活虚拟环境!gitclonehttps://gitee.com/CV_Lab/opencv_webcam.git# 克隆%cdopencv_webcam
%pipinstall-qrrequirements.txt-U# 安装❗ 注意：安装完成后，将ows_jupyter.ipynb放入opencv_webcam目录中进行下面的操作📌 第二步：运行!pythonopencv_webcam.py# 默认按q键退出!pythonopencv_webcam.py-isasf# 视频帧自动保存注：Jupyter版ows程序通过Ctrl+Enter即可运行单元指令⚡使用教程❤️OWS v0.9Bash Shell显示信息高度集成rich组件OWS v0.9 Bash Shell显示信息💡 常规启动# 启动ows程序pythonopencv_webcam.py❗ 提示：启动ows程序后，首先进入倒计时模式，有150帧倒计时准备时间，会提示用户将设备调整到合适的位置，准备开始。💡 设备选择# 多摄像头切换示例，默认为0pythonopencv_webcam.py-dev0pythonopencv_webcam.py-dev1pythonopencv_webcam.py-dev2# RTSPpythonopencv_webcam.py-dev"rtsp://username:password@xxx.xxx.xxx"❗ 注意：进行RTSP操作时，尽可能在Linux Shell中将RTSP地址用双引号标注。💡 设置退出键# 默认按q键退出pythonopencv_webcam.py-qz# 设置z键退出pythonopencv_webcam.py-qk# 设置k键退出💡 自动保存帧pythonopencv_webcam.py-isasf❗ 提示：系统根据摄像头保存的图片大小和本地磁盘容量，计算出预保存的图片数量💡 每隔n帧保存一次帧# 每隔10帧保存一次帧pythonopencv_webcam.py-isasf-fns10💡 手动保存帧# 默认按a键捕获一帧pythonopencv_webcam.py-ishsf💡 自定义捕获键# 设置z键为捕获键，默认为a键pythonopencv_webcam.py-ishsf-fckz💡 重塑帧尺寸（自定义宽高）# 重塑宽度300 高度200pythonopencv_webcam.py-isasf-isrf-rf300,200# 自动版pythonopencv_webcam.py-ishsf-isrf-rf300,200# 手动版💡 重塑帧尺寸（自定义宽高缩放比）# 宽高缩放比为0.5pythonopencv_webcam.py-isasf-isrf-rrf0.5# 自动版pythonopencv_webcam.py-ishsf-isrf-rrf0.5# 手动版💡 自定义保存路径# 设置保存路径，默认保存路径为WebcamFramepythonopencv_webcam.py-fsdcustom_dir-isasf# 以自动版为例💡 自定义帧目录名称# 设置帧目录名称，默认保存路径为framespythonopencv_webcam.py-fdnframes_custom-isasf# 以自动版为例💡 自定义帧名前缀# 设置帧图片的前缀名称pythonopencv_webcam.py-isasf-fnpwebcam# 以自动版为例💡 设置帧保存格式# 设置JPG质量为100，默认为95pythonopencv_webcam.py-isasf-fssjpg-jq100# 设置PNG质量为5，默认为3pythonopencv_webcam.py-isasf-fsspng-pq5💡 设置暂停键# 设置w键为暂停键，默认为p键pythonopencv_webcam.py-pw# 按任意键继续💡 设置保存帧数# 设置保存100帧pythonopencv_webcam.py-isasf-afn100💡 调整窗体尺寸# 手动调整窗体尺寸（v0.9）pythonopencv_webcam.py-isrw💡 日志设置# 日志文件默认保存在项目根目录，ows.logpythonopencv_webcam.py# 设置日志文件名称及类型，类型包括.log、.txt、.datapythonopencv_webcam.py-lnows02.txt# 设置日志保存方式，，默认为追加模式pythonopencv_webcam.py-lmw# 设置为覆盖模式💡 视频帧压缩# 常规压缩，默认ows.zip（以自动版为例）pythonopencv_webcam.py-isasf-isc# 自定义压缩文件名称pythonopencv_webcam.py-isasf-isc-cnows02# 自动命名压缩文件pythonopencv_webcam.py-isasf-isc-isacn# 自定义压缩模式，默认为写覆盖pythonopencv_webcam.py-isasf-isc-cstar-cmw:gz# tar压缩pythonopencv_webcam.py-isasf-isc-cma# 追加模式(a模式仅限zip) 注：该指令仅限v0.4💡 去除背景色（抠绿、抠蓝）# 去除背景色，默认为绿色pythonopencv_webcam.py-isasf-isrbgc# 选择背景色模式pythonopencv_webcam.py-isasf-isrbgc-rbgcmgreen# 抠绿pythonopencv_webcam.py-isasf-isrbgc-rbgcmblue# 抠蓝❗ 注意：为了达到去除背景色的最佳效果，背景色尽量不要混入白光，尽可能使背景色保持高的饱和度。💡 日期-帧数图❤️ 该功能在每次运行OWS程序时，根据date_time_frames.csv文件会自动生成日期-帧数图。✨ 操作示例📌 运行指令pythonopencv_webcam.py-isasf-fdntiger
pythonopencv_webcam.py-isasf-fdnlion
pythonopencv_webcam.py-isasf-fdnelephant📌 日期-帧数图目录结构.
├──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-2107:48:41,58,lion,WebcamFrame2022-02-2107:49:52,68,lion,WebcamFrame2022-02-2107:50:59,37,tiger,WebcamFrame2022-02-2107:51:14,59,elephant,WebcamFrame2022-02-2107:51:30,72,tiger,WebcamFrame2022-02-2107:51:42,116,lion,WebcamFrame2022-02-2107:51:54,127,elephant,WebcamFrame2022-02-2107:52:16,122,elephant,WebcamFrame2022-02-2107:52:27,106,lion,WebcamFrame2022-02-2107:52:38,127,tiger,WebcamFrame2022-02-2107:53:00,78,elephant,WebcamFrame2022-02-2107:53:10,107,tiger,WebcamFrame2022-02-2107:53:21,95,lion,WebcamFrame2022-02-2107:53:42,59,lion,WebcamFrame2022-02-2107:53:50,74,tiger,WebcamFrame2022-02-2107:53:59,97,elephant,WebcamFrame2022-02-2107:54:58,125,elephant,WebcamFrame2022-02-2107:55:11,79,lion,WebcamFrame2022-02-2107:55:20,110,tiger,WebcamFrame2022-02-2107:55:29,146,tiger,WebcamFrame2022-02-2107:55:55,50,tiger,WebcamFrame2022-02-2107:56:02,153,lion,WebcamFrame2022-02-2107:56:16,108,elephant,WebcamFrame2022-02-2107:56:38,121,tiger,WebcamFrame📌 lion.png📌 elephant.png📌 tiger.png💡 指令查询# 查询脚本参数pythonopencv_webcam.py--help📌 指令查询结果usage:opencv_webcam.py[-h][--deviceDEVICE][--quitQUIT][--is_autoSaveFrame][--is_handSaveFrame][--is_resizeFrame][--frame_saveDirFRAME_SAVEDIR][--frame_dirNameFRAME_DIRNAME][--frame_nSaveFRAME_NSAVE][--frame_capKeyFRAME_CAPKEY][--resize_frameRESIZE_FRAME][--resizeRatio_frameRESIZERATIO_FRAME][--frame_namePrefixFRAME_NAMEPREFIX][--frame_saveStyleFRAME_SAVESTYLE][--jpg_qualityJPG_QUALITY][--png_qualityPNG_QUALITY][--pausePAUSE][--auto_frameNumAUTO_FRAMENUM][--logNameLOGNAME][--logModeLOGMODE][--is_compress][--compressStyleCOMPRESSSTYLE][--is_autoCompressName][--compressNameCOMPRESSNAME][--compressModeCOMPRESSMODE][--is_rmbgColor][--rmbgColorModeRMBGCOLORMODE][--is_resizeWindow]OpenCVWebcamScriptv0.9

optionalarguments:-h,--helpshowthishelpmessageandexit--deviceDEVICE,-devDEVICEdeviceindexforwebcam,0orrtsp--quitQUIT,-qQUITquitkeyforwebcam--is_autoSaveFrame,-isasfisautosaveframe--is_handSaveFrame,-ishsfishandsaveframe--is_resizeFrame,-isrfisresizeframe--frame_saveDirFRAME_SAVEDIR,-fsdFRAME_SAVEDIRsaveframedir--frame_dirNameFRAME_DIRNAME,-fdnFRAME_DIRNAMEsaveframedirname--frame_nSaveFRAME_NSAVE,-fnsFRAME_NSAVEnframessaveaframe(autosaveframe)--frame_capKeyFRAME_CAPKEY,-fckFRAME_CAPKEYframecapturekey(handsaveframe)--resize_frameRESIZE_FRAME,-rfRESIZE_FRAMEresizeframesave--resizeRatio_frameRESIZERATIO_FRAME,-rrfRESIZERATIO_FRAMEresizeratioframesave--frame_namePrefixFRAME_NAMEPREFIX,-fnpFRAME_NAMEPREFIXframenameprefix--frame_saveStyleFRAME_SAVESTYLE,-fssFRAME_SAVESTYLEframesavestyle--jpg_qualityJPG_QUALITY,-jqJPG_QUALITYframesavejpgquality(0-100)default95--png_qualityPNG_QUALITY,-pqPNG_QUALITYframesavejpgquality(0-9)default3--pausePAUSE,-pPAUSEwebcampause--auto_frameNumAUTO_FRAMENUM,-afnAUTO_FRAMENUMautosavenumberofframes--logNameLOGNAME,-lnLOGNAMElogsavename--logModeLOGMODE,-lmLOGMODElogwritemode--is_compress,-isciscompressfile--compressStyleCOMPRESSSTYLE,-csCOMPRESSSTYLEcompressstyle--is_autoCompressName,-isacnisautocompressname--compressNameCOMPRESSNAME,-cnCOMPRESSNAMEcompresssavename--compressModeCOMPRESSMODE,-cmCOMPRESSMODEcompresssavemode,tarw:gz--is_rmbgColor,-isrbgcisremovebackgroundcolor--rmbgColorModeRMBGCOLORMODE,-rbgcmRMBGCOLORMODEremovebackgroundcolormode--is_resizeWindow,-isrwisresizewindow💬 技术交流如果你发现任何OpenCV Webcam Script存在的问题或者是建议, 欢迎通过Gitee Issues给我提issues。欢迎加入CV Lab技术交流群