OpenCV-Webcam: 🚀 基于 OpenCV 的 Webcam 脚本程序,适用于计算机视觉数据采集,实时视频帧收集等。具有安装便捷、操作简单、跨平台等特点。

中文简体|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

[](#-%E4%BD%9C%E8%80%85%E7%AE%80%E4%BB%8B)🚀 作者简介

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

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

🔥 YOLOv8 官方开源项目PR ID:

💡 Ultralytics v8.1.0 代码贡献链接:

🔥 YOLOv5 官方开源项目PR ID:

💡 YOLOv5 v6.1 & v6.2 & v7.0 代码贡献链接:

🔥 Gradio 官方开源项目PR ID:

[](#%E6%9B%B4%E6%96%B0%E8%B5%B0%E5%8A%BF)🚀更新走势

[](#%E9%A1%B9%E7%9B%AE%E7%94%A8%E9%80%94)💎项目用途

[](#-%E5%BF%AB%E9%80%9F%E5%88%B6%E4%BD%9C%E7%9B%AE%E6%A0%87%E6%A3%80%E6%B5%8B%E6%95%B0%E6%8D%AE%E9%9B%86)🔥 快速制作目标检测数据集

[](#-%E9%A1%B9%E7%9B%AE1%E5%9F%BA%E4%BA%8Eyolov5%E7%9A%84%E6%89%8B%E5%8A%BF%E8%AF%86%E5%88%ABdemo)📌 项目1:基于YOLOv5的手势识别demo

[](#%E9%A1%B9%E7%9B%AE%E7%BB%93%E6%9E%84)💡项目结构

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

[](#%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B)🔥安装教程

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

[](#-%E6%96%B9%E6%B3%95%E4%B8%80linux-shell%E5%AE%89%E8%A3%85%E5%BC%80%E5%8F%91%E7%89%88)✅ 方法一:Linux Shell安装(开发版)

[](#-opencv-webcam-script-bash%E7%89%88-%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B)🔥 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 的环境下运行

[](#-%E6%96%B9%E6%B3%95%E4%BA%8Cpip-%E5%BF%AB%E9%80%9F%E5%AE%89%E8%A3%85pypi%E7%89%88)✅ 方法二:pip 快速安装(PyPI版)

[](#-opencv-webcam-script-pypi%E7%89%88-%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B)🔥 opencv-webcam-script PyPI版 详细教程

[](#-%E7%AE%80%E6%98%93%E6%95%99%E7%A8%8B)🎨 简易教程

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

📌 第二步:执行pip指令

pip install opencv-webcam-script==0.9.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) # 压缩帧

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

[](#-%E6%96%B9%E6%B3%95%E4%B8%89docker-%E9%95%9C%E5%83%8F%E5%AE%89%E8%A3%85docker%E7%89%88)✅ 方法三:docker 镜像安装(docker版)

[](#-opencv-webcam-script-docker%E7%89%88-%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B)🔥 opencv-webcam-script docker版 详细教程

[](#-%E7%AE%80%E6%98%93%E6%95%99%E7%A8%8B-1)🎨 简易教程

📌 第一步:下载镜像

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 指令,确保连接到本地设备。

[](#-%E6%96%B9%E6%B3%95%E5%9B%9Bpodman-%E5%AE%89%E8%A3%85podman%E7%89%88)✅ 方法四:Podman 安装(Podman版)

[](#-opencv-webcam-script-podman%E7%89%88-%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B)🔥 opencv-webcam-script Podman版 详细教程

[](#-%E7%AE%80%E6%98%93%E6%95%99%E7%A8%8B-2)🎨 简易教程

📌 第一步:下载镜像

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 指令,确保连接到本地设备。

[](#-%E6%96%B9%E6%B3%95%E4%BA%94jupyter-%E5%AE%89%E8%A3%85jupyter%E7%89%88)✅ 方法五:Jupyter 安装(Jupyter版)

[](#-opencv-webcam-script-jupyter%E7%89%88-%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B)🔥 opencv-webcam-script Jupyter版 详细教程

[](#-%E7%AE%80%E6%98%93%E6%95%99%E7%A8%8B-3)🎨 简易教程

📌 第一步:安装

# 首先手动创建虚拟环境
# 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 即可运行单元指令

[](#%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B)⚡使用教程

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

OWS v0.9 Bash Shell显示信息

[](#-%E5%B8%B8%E8%A7%84%E5%90%AF%E5%8A%A8)💡 常规启动

# 启动ows程序
python opencv_webcam.py

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

[](#-%E8%AE%BE%E5%A4%87%E9%80%89%E6%8B%A9)💡 设备选择

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

[](#-%E8%AE%BE%E7%BD%AE%E9%80%80%E5%87%BA%E9%94%AE)💡 设置退出键

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

[](#-%E8%87%AA%E5%8A%A8%E4%BF%9D%E5%AD%98%E5%B8%A7)💡 自动保存帧

python opencv_webcam.py -isasf

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

[](#-%E6%AF%8F%E9%9A%94n%E5%B8%A7%E4%BF%9D%E5%AD%98%E4%B8%80%E6%AC%A1%E5%B8%A7)💡 每隔n帧保存一次帧

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

[](#-%E6%89%8B%E5%8A%A8%E4%BF%9D%E5%AD%98%E5%B8%A7)💡 手动保存帧

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

[](#-%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8D%95%E8%8E%B7%E9%94%AE)💡 自定义捕获键

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

[](#-%E9%87%8D%E5%A1%91%E5%B8%A7%E5%B0%BA%E5%AF%B8%E8%87%AA%E5%AE%9A%E4%B9%89%E5%AE%BD%E9%AB%98)💡 重塑帧尺寸(自定义宽高)

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

[](#-%E9%87%8D%E5%A1%91%E5%B8%A7%E5%B0%BA%E5%AF%B8%E8%87%AA%E5%AE%9A%E4%B9%89%E5%AE%BD%E9%AB%98%E7%BC%A9%E6%94%BE%E6%AF%94)💡 重塑帧尺寸(自定义宽高缩放比)

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

[](#-%E8%87%AA%E5%AE%9A%E4%B9%89%E4%BF%9D%E5%AD%98%E8%B7%AF%E5%BE%84)💡 自定义保存路径

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

[](#-%E8%87%AA%E5%AE%9A%E4%B9%89%E5%B8%A7%E7%9B%AE%E5%BD%95%E5%90%8D%E7%A7%B0)💡 自定义帧目录名称

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

[](#-%E8%87%AA%E5%AE%9A%E4%B9%89%E5%B8%A7%E5%90%8D%E5%89%8D%E7%BC%80)💡 自定义帧名前缀

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

[](#-%E8%AE%BE%E7%BD%AE%E5%B8%A7%E4%BF%9D%E5%AD%98%E6%A0%BC%E5%BC%8F)💡 设置帧保存格式

# 设置JPG质量为100,默认为95
python opencv_webcam.py -isasf -fss jpg -jq 100
# 设置PNG质量为5,默认为3
python opencv_webcam.py -isasf -fss png -pq 5

[](#-%E8%AE%BE%E7%BD%AE%E6%9A%82%E5%81%9C%E9%94%AE)💡 设置暂停键

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

[](#-%E8%AE%BE%E7%BD%AE%E4%BF%9D%E5%AD%98%E5%B8%A7%E6%95%B0)💡 设置保存帧数

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

[](#-%E8%B0%83%E6%95%B4%E7%AA%97%E4%BD%93%E5%B0%BA%E5%AF%B8)💡 调整窗体尺寸

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

[](#-%E6%97%A5%E5%BF%97%E8%AE%BE%E7%BD%AE)💡 日志设置

# 日志文件默认保存在项目根目录,ows.log
python opencv_webcam.py
# 设置日志文件名称及类型,类型包括.log、.txt、.data
python opencv_webcam.py -ln ows02.txt
# 设置日志保存方式,,默认为追加模式
python opencv_webcam.py -lm w # 设置为覆盖模式

[](#-%E8%A7%86%E9%A2%91%E5%B8%A7%E5%8E%8B%E7%BC%A9)💡 视频帧压缩

# 常规压缩,默认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

[](#-%E5%8E%BB%E9%99%A4%E8%83%8C%E6%99%AF%E8%89%B2%E6%8A%A0%E7%BB%BF%E6%8A%A0%E8%93%9D)💡 去除背景色(抠绿、抠蓝)

# 去除背景色,默认为绿色
python opencv_webcam.py -isasf -isrbgc
# 选择背景色模式
python opencv_webcam.py -isasf -isrbgc -rbgcm green # 抠绿
python opencv_webcam.py -isasf -isrbgc -rbgcm blue # 抠蓝

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

[](#-%E6%97%A5%E6%9C%9F-%E5%B8%A7%E6%95%B0%E5%9B%BE)💡 日期-帧数图

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

[](#-%E6%93%8D%E4%BD%9C%E7%A4%BA%E4%BE%8B)✨ 操作示例

📌 运行指令

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

[](#-%E6%8C%87%E4%BB%A4%E6%9F%A5%E8%AF%A2)💡 指令查询

# 查询脚本参数
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

[](#-%E6%8A%80%E6%9C%AF%E4%BA%A4%E6%B5%81)💬 技术交流

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


原网址: 访问
创建于: 2024-03-07 16:21:35
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论