中文简体|[English](./README.en.md)

<div align="center">
	<a href="https://gitee.com/CV_Lab/opencv_webcam">
	<img src="https://pycver.gitee.io/ows-pics/imgs/opencv-webcam-script_logo.png" alt="Simple Icons" >
	</a>
<p align="center">
    基于OpenCV的Webcam程序，适用于计算机视觉数据采集，实时视频帧收集等。
</p>
<p align="center">
    具有安装便捷、操作简单、跨平台等特点。
</p>
</div>
<div align="center">
<p align="center">
	<a href="./CodeCheck.md"><img src="https://img.shields.io/badge/CodeCheck-passing-success" alt="code check" /></a>
	<a href="https://gitee.com/CV_Lab/opencv_webcam/releases/v0.9"><img src="https://img.shields.io/badge/Releases-v0.9-green" alt="Releases Version" /></a>
	<a href="https://pypi.org/project/opencv-webcam-script/0.9.0/"><img src="https://badge.fury.io/py/opencv-webcam-script.svg" alt="PyPI" /></a>
	<a href="https://hub.docker.com/r/zengdockerdocker/opencv-webcam-script"><img src="https://img.shields.io/badge/docker-v0.9-blue?logo=docker" alt="Docker" /></a>
	<a href="./tutorial/ows_podman.md"><img src="https://img.shields.io/badge/Podman-v0.9-blueviolet?logo=podman" alt="Podman" /></a>
	<a href="https://gitee.com/CV_Lab/opencv_webcam/blob/master/tutorial/ows_jupyter.ipynb"><img src="https://img.shields.io/badge/Jupyter-v0.9-orange?logo=jupyter" alt="Jupyter" /></a>
	<a href="https://gitee.com/CV_Lab/opencv_webcam/blob/master/LICENSE"><img src="https://img.shields.io/badge/License-GPL--3.0-blue" alt="License" /></a>
</p>
<p align="center">
    <a href="https://github.com/pre-commit/pre-commit"><img src="https://img.shields.io/badge/checks-pre--commit-brightgreen" alt="pre-commit"></a>
    <a href="#"><img src="https://img.shields.io/badge/Python-3.8%2B-blue?logo=python" alt="Python Version" /></a>
    <a href="https://snyk.io/advisor/python/opencv-webcam-script"><img src="https://snyk.io/advisor/python/opencv-webcam-script/badge.svg" alt="PyPI Package Health"></a>
    <a href="https://github.com/PyCQA/bandit"><img src="https://img.shields.io/badge/security-bandit-yellow.svg" alt="security bandit"></a>
</p>
<p align="center">
    <a href='https://gitee.com/CV_Lab/opencv_webcam/stargazers'><img src='https://gitee.com/CV_Lab/opencv_webcam/badge/star.svg?theme=dark' alt='star'></img></a>
	<a href='https://gitee.com/CV_Lab/opencv_webcam/members'><img src='https://gitee.com/CV_Lab/opencv_webcam/badge/fork.svg?theme=dark' alt='fork'></img></a>
	<a href="https://hub.docker.com/r/zengdockerdocker/opencv-webcam-script"><img src="https://img.shields.io/docker/pulls/zengdockerdocker/opencv-webcam-script?logo=docker" alt="Docker Pulls"></a>
	<a href="https://pypi.org/project/opencv-webcam-script"><img src="https://static.pepy.tech/personalized-badge/opencv-webcam-script?period=total&units=international_system&left_color=grey&right_color=brightgreen&left_text=PyPI%20downloads" alt="PyPI All Downloads"></a>
</p>
</div>

## 🚀 作者简介

曾逸夫，从事人工智能研究与开发；主研领域：计算机视觉；[YOLOv5官方开源项目代码贡献人](https://github.com/ultralytics/yolov5/graphs/contributors)；[YOLOv5 v6.1代码贡献人](https://github.com/ultralytics/yolov5/releases/tag/v6.1)；[Gradio官方开源项目代码贡献人](https://github.com/gradio-app/gradio/graphs/contributors)

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

🔥 YOLOv5 官方开源项目PR ID：

- Save \*.npy features on detect.py `--visualize`：https://github.com/ultralytics/yolov5/pull/5701
- Fix `detect.py --view-img` for non-ASCII paths：https://github.com/ultralytics/yolov5/pull/7093
- Fix Flask REST API：https://github.com/ultralytics/yolov5/pull/7210
- Add yesqa to precommit checks：https://github.com/ultralytics/yolov5/pull/7511
- Add mdformat to precommit checks and update other version：https://github.com/ultralytics/yolov5/pull/7529
- Add 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

<h2 align="center">🚀更新走势</h2>

- `2022-07-26` **⚡ [opencv-webcam-script v0.9 Jupyter版](./tutorial/ows_jupyter.ipynb)正式上线**
- ⚡ **[opencv-webcam-script 历史版本](./v_change)**

<h2 align="center">💎项目用途</h2>

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

#### 📌 项目1：[基于YOLOv5的手势识别demo](GestureData_yolov5.md)

<div align="center" >
<a href="https://gitee.com/CV_Lab/opencv_webcam/blob/master/GestureData_yolov5.md">
<img src="https://pic.imgdb.cn/item/61f9be4e2ab3f51d9184300d.gif"></a>
</div>

<h2 align="center">💡项目结构</h2>

```
.
├── 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					# 脚本依赖包
```

<h2 align="center">🔥安装教程</h2>

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

<div align="center">
    <a href="./tutorial/ows_bash.md">
        <img src="https://pycver.gitee.io/ows-pics/imgs/bash.png" width="15%"/>
    </a>
    <a href="./tutorial/ows_pypi.md">
        <img src="https://pycver.gitee.io/ows-pics/imgs/pypi_logo.png" width="18%"/>
    </a>
    <a href="./tutorial/ows_docker.md">
        <img src="https://pycver.gitee.io/ows-pics/imgs/docker_logo.png" width="15%"/>
    </a>
    <a href="./tutorial/ows_podman.md">
        <img src="https://pycver.gitee.io/ows-pics/imgs/Podman_logo.png" width="15%"/>
    </a>
    <a href="./tutorial/ows_jupyter.ipynb">
        <img src="https://pycver.gitee.io/ows-pics/imgs/Jupyter_logo.png" width="12%"/>
    </a>
</div>

### ✅ 方法一：Linux Shell安装（开发版）

#### 🔥 [opencv-webcam-script Bash版 详细教程](./tutorial/ows_bash.md)

📌 第一步：克隆项目

```shell
git clone https://gitee.com/CV_Lab/opencv_webcam.git # 克隆项目
```

📌 第二步：创建虚拟环境

```shell
# 创建conda虚拟环境，以python 3.8为例
conda create -n ows python==3.8 # 虚拟环境名称为ows
conda activate ows # 激活虚拟环境
```

📌 第三步：安装脚本

```shell
pip install --upgrade pip # 升级pip
pip install -r ./requirements.txt -U # 安装OpenCV Webcam脚本
```

📌 第二步和第三步也可以通过[setup.sh](./setup.sh) 执行

```shell
bash ./setup.sh
```

❗ 注意：**OWS v0.6** 以上的版本需要在[**Python>=3.8.0**](https://www.python.org/) 的环境下运行

### ✅ 方法二：pip 快速安装（PyPI版）

#### 🔥 [opencv-webcam-script PyPI版 详细教程](./tutorial/ows_pypi.md)

#### 🎨 简易教程

📌 第一步：创建ows虚拟环境，参见方法一

📌 第二步：执行pip指令

```shell
pip install opencv-webcam-script==0.9.0
```

📌 第三步：编写python程序

```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版 详细教程](./tutorial/ows_docker.md)

#### 🎨 简易教程

📌 第一步：下载镜像

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

📌 第二步：创建容器

```shell
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
```

📌 第三步：运行程序

```shell
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版 详细教程](./tutorial/ows_podman.md)

#### 🎨 简易教程

📌 第一步：下载镜像

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

📌 第二步：创建容器

```shell
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
```

📌 第三步：运行程序

```shell
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版 详细教程](./tutorial/ows_jupyter.ipynb)

#### 🎨 简易教程

📌 第一步：安装

```shell
# 首先手动创建虚拟环境
# 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`目录中进行下面的操作

📌 第二步：运行

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

**注：[Jupyter版ows](https://gitee.com/CV_Lab/opencv_webcam/blob/master/tutorial/ows_jupyter.ipynb)程序通过`Ctrl+Enter` 即可运行单元指令**

<h2 align="center">⚡使用教程</h2>

❤️ **OWS v0.9** Bash Shell显示信息高度集成[rich](https://github.com/Textualize/rich)组件

<div align="center" width="50%">
<a href="https://github.com/Textualize/rich">
<img src="https://pycver.gitee.io/ows-pics/imgs/rich.svg">
</a>
</div>

<div align="center" >
<img src="https://pycver.gitee.io/ows-pics/imgs/ows_v09_shell.png">
</div>

<div align="center" >
OWS v0.9 Bash Shell显示信息
</div>

#### 💡 常规启动

```shell
# 启动ows程序
python opencv_webcam.py
```

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

<div align="center" >
<img src="https://pycver.gitee.io/ows-pics/imgs/countdown.png">
</div>

#### 💡 设备选择

```shell
# 多摄像头切换示例，默认为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地址用**双引号**标注。

#### 💡 设置退出键

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

<div align="center" >
<img src="https://pycver.gitee.io/ows-pics/imgs/webcam2frames.png">
</div>

#### 💡 自动保存帧

```shell
python opencv_webcam.py -isasf
```

❗ 提示：系统根据摄像头保存的图片大小和本地磁盘容量，计算出**预保存的图片数量**

<div align="center" >
<img src="https://pycver.gitee.io/ows-pics/imgs/pre_save_imgs.png">
</div>

#### 💡 每隔n帧保存一次帧

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

#### 💡 手动保存帧

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

#### 💡 自定义捕获键

```shell
# 设置z键为捕获键，默认为a键
python opencv_webcam.py -ishsf -fck z
```

#### 💡 重塑帧尺寸（自定义宽高）

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

#### 💡 重塑帧尺寸（自定义宽高缩放比）

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

#### 💡 自定义保存路径

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

#### 💡 自定义帧目录名称

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

#### 💡 自定义帧名前缀

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

#### 💡 设置帧保存格式

```shell
# 设置JPG质量为100，默认为95
python opencv_webcam.py -isasf -fss jpg -jq 100

# 设置PNG质量为5，默认为3
python opencv_webcam.py -isasf -fss png -pq 5
```

#### 💡 设置暂停键

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

#### 💡 设置保存帧数

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

#### 💡 调整窗体尺寸

```shell
# 手动调整窗体尺寸（v0.9）
python opencv_webcam.py -isrw
```

<div align="center" >
<img src="https://pycver.gitee.io/ows-pics/imgs/webcam2log.png">
</div>

#### 💡 日志设置

```shell
# 日志文件默认保存在项目根目录，ows.log
python opencv_webcam.py

# 设置日志文件名称及类型，类型包括.log、.txt、.data
python opencv_webcam.py -ln ows02.txt

# 设置日志保存方式，，默认为追加模式
python opencv_webcam.py -lm w # 设置为覆盖模式
```

<div align="center" >
<img src="https://pycver.gitee.io/ows-pics/imgs/frames2zip.png">
</div>

#### 💡 视频帧压缩

```shell
# 常规压缩，默认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
```

<div align="center" >
	<img src="https://pycver.gitee.io/ows-pics/imgs/rm_bgColor.png">
</div>

<div align="center">
	<img src="https://pycver.gitee.io/ows-pics/imgs/green.jpg" width="20%"/>
	<img src="https://pycver.gitee.io/ows-pics/imgs/remove_green.png" width="20%"/>
	<img src="https://pycver.gitee.io/ows-pics/imgs/blue.jpg" width="20%"/>
	<img src="https://pycver.gitee.io/ows-pics/imgs/remove_blue.png" width="20%"/>
</div>

#### 💡 去除背景色（抠绿、抠蓝）

```shell
# 去除背景色，默认为绿色
python opencv_webcam.py -isasf -isrbgc

# 选择背景色模式
python opencv_webcam.py -isasf -isrbgc -rbgcm green # 抠绿
python opencv_webcam.py -isasf -isrbgc -rbgcm blue # 抠蓝
```

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

<div align="center" >
<img src="https://pycver.gitee.io/ows-pics/imgs/date-frames.png">
</div>

#### 💡 日期-帧数图

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

##### ✨ 操作示例

📌 运行指令

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

📌 日期-帧数图目录结构

```shell
.
├── opencv_webcam							# 项目名称
│   ├── DateFrames							# 日期-帧数图目录
│   │   ├── 2022-02-21						# 日期目录
│   │   │   ├── lion.png					# lion类别日期-帧数图
│   │   │   ├── elephant.png				# elephant类别日期-帧数图
│   │   │   └── tiger.png					# tiger类别日期-帧数图
│   ├── date_time_frames.csv				# 日期-帧数图日志
│   ├── ....								# 其他文件
```

<details close>
<summary>📌 date_time_frames.csv日志文件</summary>

```shell
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
```

</details>

<p align="center" >
<details open>
<summary>📌 lion.png</summary>
<img src="https://pycver.gitee.io/ows-pics/imgs/lion.png">
</details>

<details close>
<summary>📌 elephant.png</summary>
<img src="https://pycver.gitee.io/ows-pics/imgs/elephant.png">
</details>

<details close>
<summary>📌 tiger.png</summary>
<img src="https://pycver.gitee.io/ows-pics/imgs/tiger.png">
</details>
</p>

#### 💡 指令查询

```shell
# 查询脚本参数
python opencv_webcam.py --help
```

<details close>
<summary>📌 指令查询结果</summary>

```shell
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
```

</details>

### 💬 技术交流

- 如果你发现任何OpenCV Webcam Script存在的问题或者是建议, 欢迎通过[Gitee Issues](https://gitee.com/CV_Lab/opencv_webcam/issues)给我提issues。
- 欢迎加入CV Lab技术交流群

<div align="center" >
<img src="https://pycver.gitee.io/ows-pics/imgs/qq_group.jpg" width="20%">
</div>
