从视频中捕捉包含运动的画面
ver 210112.1515
新增功能:
已知问题:
此版本的 video-capturer 在较新版本的 macOS 上试图采集网络视频流时会在终端提示错误,导致采集无法继续
错误信息:
NSWindow drag regions should only be invalidated on the Main Thread!
此种类型的错误暂时没有解决方案,可尝试在 macOS Catalina 以下、Python 3.7 以下的环境中,或使用其他操作系统运行本程序
在采集网络视频流时,当与所有网络视频流的连接断开后,主程序可能会停止响应
在 GUI 版本中,启用日志记录会显著拖慢采集速度,建议将 save_log 参数设置为 false
在 Windows 上使用 CMD 版本时,部分 H264 编码的视频在采集过程中会在终端频繁提示错误,不影响采集,但可能影响性能,并显示错误的估计剩余时间
错误信息:
[NULL @ 00000230ac4d4a00] non-existing PPS 0 referenced
变通办法:
转换视频格式
使用 GUI 版本的静默采集模式:
pythonw vcgui.py
使用 CMD 版本的静默采集模式:
pythonw vccmd.py
video-capturer 的默认结构如下:
目录 / 文件 | 描述 | 可设定 | 可删除 |
---|---|---|---|
[video-capturer] | 根目录 | ||
- [imagezmq] | 图像采集过程中用到的包 | ||
- [input] | “输入”目录 | v | v |
- [log] | 日志目录 | v | |
- [offlinepkg] | 软件依赖包离线安装包 | ||
- [output] | “输出”目录 | v | v |
- [pyimagesearch] | 图像采集过程中用到的包 | ||
- [xiangzhenlu] | 图像采集过程中用到的包 | ||
- conf.json | 图像采集的设置文件示例(默认) | v | |
- conf_2.json | 图像采集的设置文件示例 | v | v |
- README.md | 软件说明文档 | ||
- requirements.txt | 软件依赖包安装清单 | ||
- streams.txt | 待采集的网络视频流 URL 列表 | v | |
- vccmd.py | 软件主程序(CMD 版本) | ||
- vcgui.py | 软件主程序(GUI 版本) |
注意:与软件功能非直接相关的文件虽不在上述列表中,亦不可删除。
以运行 Windows 10 的设备为例:
安装 Python
打开 Microsoft Store 应用,搜索“Python”并下载 Python 3.7 / 3.8。
安装依赖包
在 video-capturer 目录下,以管理员身份打开命令提示符或 PowerShell,键入
python install.py
开始安装。安装完成后,即可开始使用 video-capturer。
注意:如果上述命令提示错误,请将 python 替换为 python3。
可以使用命令行(CMD)版本或图形用户界面(GUI)版本之一的 video-capturer 进行采集。
如果从视频文件采集图像:
如果从摄像头采集图像:
如果从网络视频流采集图像:
video-capturer 使用 .json 文件规定采集图像过程中的设置,默认使用根目录下的 conf.json 文件。包括以下参数:
参数 | 描述 | 值 | 描述 |
---|---|---|---|
show_video | 在采集图像时显示视频源窗口。在某些系统环境下,禁用可以加快捕捉速度。 | true | 显示窗口 |
false | 隐藏窗口 | ||
save_log | 保存本次采集的日志。日志将保存到 log/ 目录下、以本次采集开始时间命名的 .log 文件中。部分错误信息不会出现在日志中。 | true | 保存日志 |
false | 不保存日志 | ||
output_folder | “输出”目录,即采集图像的保存位置,可以在本地、可移动介质或网络上,可以是相对路径(如 output/)或绝对路径(如 D:/)。 | "路径",以 / 结尾 | 全部采集结果保存到路径下的“视频名称__设置名称”子文件夹中 |
annotation_type | 采集图像标注,包括 PascalVOC 和 YOLO 格式。图像标注文件将保存到“视频名称__设置名称”文件夹下的 annotations 子文件夹中。 | pascalvoc | 保存为 PascalVOC 格式的 XML 文件 |
yolo | 保存为 YOLO 格式的 TXT 文件 | ||
read_frames | 视频文件的读法,即每几帧取一帧读。 | 1 | 按帧读取视频 |
n | 每 n 帧取一帧读 | ||
capture_type | 图像的采集算法,包括多帧加权平均法、二帧差分法、三帧差分法。 | "avg" | 多帧加权平均法 |
"two" | 二帧差分法 | ||
"three" | 三帧差分法 | ||
capture_images | 图像的采集方式,包括应采尽采、采集多帧、采集多秒。该选项是一个数组,第一个参数规定侦测到运动时采集图像的方式,第二、三个参数规定相应数值(第三个值不存在时须填一个整数)。 | ["all", n, 0] | 应采尽采,每 n 帧取一帧保存 |
["frame", n, 0] | 采集 n 帧 | ||
["second", m, n] | 采集 m 秒,每 n 帧取一帧保存 | ||
min_motion_frames | 运动帧最小值,即在图像保存到磁盘之前包含运动的连续帧的最小数量。值越小,保存的图像越多,但偶发运动的结果也会更多。 | n | 连续侦测到运动超过 n 帧,才保存这一批连续运动的图像 |
min_delta_thresh | 阈值增量最小值,即令给定像素被判定为“运动”的、当前帧和平均帧 / 前帧之间的最小绝对值差。值越小,检测到的运动更多,但 false positive (假相关)的结果也会更多。 | n | 侦测到当前帧和平均帧 / 前帧之间的阈值增量达到 n 时,判定当前帧为“运动” |
min_area | 轮廓区域最小值,即令给定像素被判定为“运动”的、图像的最小区域面积(以像素为单位)。值越小,标注到更多运动区域的轮廓,具体大小可根据需要判定的物体调整。 | n | 侦测到运动的像素面积达到 n 时,判定该区域包含运动的物体 |
json_created | 此 .json 文件的创建时间。若要在其他地方使用此参数,请按照 YYYY-MM-DD HH:MM 的格式填写。 | "YYYY-MM-DD HH:MM" | 在此时间创建 |
json_notes | 此 .json 文件的注释。 | "注释" |
注意:
在 video-capturer 目录下,打开命令提示符或 PowerShell。
在继续之前,请留意键入命令的结构:
python vccmd.py -c <用户设置文件路径> -i <采集来源类型> -p <采集来源路径>
其中,有两个必需参数:
根据这些参数的排列组合,有如下几种采集模式:
正常采集:
加载 conf.json 配置文件,采集单个文件
python vccmd.py -i file -p example_01.mp4
加载 conf.json 配置文件,采集整个目录
python vccmd.py -i folder -p input/
加载 conf.json 配置文件,采集摄像头
python vccmd.py -i webcam
加载 conf.json 配置文件,采集网络视频流
python vccmd.py -i network
加载用户自定义的配置文件,采集单个文件
python vccmd.py -c conf_2.json -i files -p example_01.mp4
静默采集:
加载 conf.json 配置文件,采集单个文件
pythonw vccmd.py -i files -p example_01.mp4
在 video-capturer 提示“现在开始采集?[y/n]”语句后,键入 y 并回车,采集过程将开始。
采集过程中,将弹出视频源窗口(如果适用)。
如果从视频文件采集图像:
如果从摄像头采集图像:
如果从网络视频流采集图像:
注意:
为防止因权限不足,无法创建文件或文件夹而中断后续的采集过程,建议以管理员身份运行命令提示符或 PowerShell。
如果上述命令提示错误,请将 python 替换为 python3。
尽管在 CMD 版本下,只支持一次采集单个文件,但输入的命令中仍采用复数形式的 files。
如果出现以下错误,请暂时在本机禁用所用网络的防火墙:
Assertion failed: error not defined [0] (bundled\zeromq\src\err.cpp:383)
在某些系统环境下,采集时的以下操作将会使采集暂停:
如果同时启用了静默采集和隐藏窗口选项,可以通过日志文件和 Windows 任务管理器中的 Python 进程确定采集进程。
采集过程中,可以使用键盘快捷键中止过程:
或者通过 Ctrl + C 中止程序。
注意:
如果从视频文件采集图像:
如果从摄像头采集图像:
如果从网络视频流采集图像:
在 video-capturer 目录下,打开命令提示符或 PowerShell,键入
pythonw vcgui.py
待图形用户界面显示后,可以关闭打开的命令提示符或 PowerShell。
注意:如果上述命令提示错误,请将 pythonw 替换为 python 或 python3。但在后两种情况下,待图形用户界面显示后,不可关闭打开的命令提示符或 PowerShell,否则程序将退出。
在窗口左侧,指定一种采集来源。
如果从视频文件采集图像:
如果从摄像头采集图像:
如果从网络视频流采集图像:
在窗口右侧,指定要使用的 .json 设置文件,也可以新建设置文件。如果弹出了“错误”对话框,请按提示进行操作。单击“修改”链接可以调整每项采集设置。单击“保存修改”应用到 .json 设置文件和即将进行的采集。
当采集来源、.json 设置文件均设置好后,即可单击“开始采集”按钮进行采集。
采集过程中,将弹出采集指示窗口和视频源窗口(如果适用)。
如果从视频文件采集图像:
如果从摄像头采集图像:
如果从网络视频流采集图像:
注意:
采集过程中:
问:采集的图像数量太多怎么办?
答:采集的图像数量多,常常与采集结果中 false positive 太多有关,具体请参见下一个问题。但是,如果仅仅希望降低采集图像的数量,可采用以下方法之一:
问:采集的图像中,false positive 太多怎么办?
答:采集的图像 false positive 多,意味着采集的标准过于宽松。要增加结果的相关性,可采用以下方法之一:
问:可以采集移动存储设备、局域网或网络上的视频文件吗?
答:可以,CMD 版本支持挂载到某一盘符(如 Z:/)下的网络位置,并直接从此位置采集。GUI 版本支持网络位置,无论它是否挂载到盘符,但采集时,系统会将待采集的文件缓存到本地。如果视频文件的输入位置位于可移动介质或网络上,采集速度将受到影响。
本软件使用了以下开源代码:
ver 200601.1350
新增功能:
修复问题:
ver 200617.1311
新增功能:
修复问题:
ver 200622.1157
新增功能:
ver 200625.2340
新增功能:
移除功能:
修复问题:
ver 200626.2326
新增功能:
ver 200714.1200
新增功能:
移除功能:
修复问题:
ver 200715.1435
修复问题:
ver 201013.2100
新增功能:
修复问题:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。