前言
- 需要下载安装OpenCV工具包的朋友,请前往 此处 ;
- 系统要求:Windows系统,LabVIEW>=2018,兼容32位和64位。
video 模块
video (注意不是videoio)是 OpenCV 视频分析核心模块,目前主要包含两大功能:目标跟踪、背景剥离。
1. 目标追踪
目标追踪的任务是,对于给定的目标物体,在视频中逐帧定位出其所在的ROI区域。可以用 Tracker 类实现。
Tracker 是一个抽象基类,可用的子类有:TrackerMIL、TrackerGOTURN、TrackerDaSiamRPN、TrackerNano、TrackerVit。
下面使用 TrackerMIL 类实现一段视频的目标追踪。
- 插入一个 Tracker 选板的 create 函数,切换模式到 “TrackerMIL” ,并设置必要的参数;
- 借助 VideoCapture 类,打开视频文件,并逐帧读取图像;
- 在 “目标物体” 首次出现时,调用 Tracker 的 init 函数,指定目标的ROI区域;
- 在后续的图像帧中,逐帧调用 Tracker 的 update 函数,找出目标最新的ROI位置;
- 最后使用各自的 release 函数,将所有对象释放。
参考范例:examples/Molitec/OpenCV/video/video_1(Tracker).vi
Tracker
2. 背景剥离
对于静止拍摄的摄像头,比如监控摄像头,可以通过视频分析算法区分 “运动物体” 和 “静止背景”,经过多帧分析后,将始终保持静止的 “背景” 从画面中提取出来。可以用 BackgroundSubtractor 类实现。
BackgroundSubtractor 是一个抽象基类,可用的子类有:BackgroundSubtractorMOG2 和 BackgroundSubtractorKNN。
下面提供一个 BackgroundSubtractorMOG2 实现的范例。
- 插入一个 BackgroundSubtractor 选板的 create 函数,切换模式到 “BackgroundSubtractorMOG2” ,并设置必要的参数;
- 借助 VideoCapture 类,打开视频文件,并逐帧读取图像;
- 每读取一帧图像,调用 BackgroundSubtractor 的 apply 函数进行计算,得到一帧 “前景掩码” fgmask;
- 视频全部结束后,调用一次 BackgroundSubtractor 的 getBackgroundImage 函数,获得最终剥离的背景;
- 最后使用各自的 release 函数,将所有对象释放。
参考范例:examples/Molitec/OpenCV/video/video_2(BackgroundSubtractor).vi
BackgroundSubtractor
总结
- 本系列博文作为LabVIEW工具包—OpenCV的教程,将以专栏的形式陆续发布和更新。
- 对工具包感兴趣的朋友,欢迎下载试用:秣厉科技 - LabVIEW工具包 - OpenCV
- 各位看官有什么想法、建议、吐槽、批评,或新奇的需求,也欢迎留言讨论。