dvg-utils是一组工具,可以帮助你使用OpenCV快速构建图像和视频处理管道。
在不同的平台和设备上进行计算机视觉和深度学习的实验带来了许多挑战,尤其是当你希望与团队共同维护一个代码库而不需要做重复的工作。从不同设备设置视频流的步骤基本上是一样的,该过程我们需要记录日志,读取配置文件,绘制带有标签的框,保存结果,收集一些指标等,为什么不将这些工作放在一起呢?这就是本文向你介绍dvg-utils的意义。
目录
dvg-utils简介
设置
命令行工具
捕获视频
捕获图像
例子
指标
概要
资源
dvg-utils简介
自从我写了第一篇关于为图像和视频处理创建一个模块化而且简单的管道的文章以来,差不多过去一年了,从那以后我也一直在学习,学到了很多东西。在这段时间里,我做了许多不同的项目,它们总是需要相同的步骤。
每个计算机视觉管道都需要以下代码块:
设置日志
读取配置文件
捕获图像或视频流
处理数据
可视化结果
显示结果
保存结果
收集指标
这些代码块中的大多数都是在每个项目中会反复出现的模板代码。
为了更轻松,更快速地设置计算机视觉项目,我在SławomirGilewski的帮助下创建了dvg-utils Python软件包。
dvg-utils:https://github.com/jagin/dvg-utils
SławomirGilewski:https://medium.com/u/1ddaceb8aa71
设置
在开始之前,我建议使用Python虚拟环境。虚拟环境允许你在系统上运行独立的Python环境,更多请看一下RealPython上的这篇文章。
https://realpython.com/python-virtual-environments-a-primer/
我假设你正在使用具有Linux或MacOs系统的台式机/笔记本电脑(我没有机会在Windows平台上对其进行测试,但它应该可以运行)。
如果你想从Jetson设备运行一些示例,Jetpack的SDK已经安装了OpenCV,你可以跳过pip install opencv-contrib-python这一步骤。
对于树莓派用户,请在此文章的帮助下安装OpenCV 。
https://www.pyimagesearch.com/2019/09/16/install-opencv-4-on-raspberry-pi-4-and-raspbian-buster/
为了浏览库和用法示例,让我们克隆它并安装所需的软件包:
$ git clone https://github.com/jagin/dvg-utils.git
$ cd ./dvg-utils
$ pip install tqdm pyyaml numpy
$ pip install opencv-contrib-python
$ pip install dvg-utils
命令行工具
安装dvg-utils后,你可以访问dvg-utils工具命令:
将视频文件转换为一组图像
$ dvg-utils v2i -i assets/videos/faces.mp4 -o output --display
将一组帧图像转换为视频文件
$ dvg-utils i2v -i output -o output/my_new_file.avi --display
绘制指标(我将在本故事的后面部分对此进行详细介绍)
对于参数描述,请运行以下命令之一:
$ dvg-utils v2i -h
$ dvg-utils i2v -h
$ dvg-utils pm -h
如果可以分别处理每一帧,则将视频转换为图像并返回,你可以并行处理这些帧,然后将它们组合回带有可视注释的视频文件中。
捕获视频
dvg-utils的强大功能来自于从OpenCV cv2.VideoCapture和树莓派相机支持的所有源捕获视频流,使用单线:
video_capture = VideoCapture(conf["videoCapture"]).open()
技巧是使用conf["videoCapture"]
,其中包含我们的视频捕获配置的字典,该字典从YAML配置文件中读取,参考:https://medium.com/swl