基于OpenCV+MFC的视频读取与对象跟踪平台
- 引言
- 一、软件功能简介
- 二、各个功能介绍
- 1、视频操作模块功能介绍
- 1.1打开视频
- 1.2打开摄像头
- 1.3开始录制
- 1.4结束录制
- 1.5暂停
- 1.6恢复
- 1.7关闭
- 1.8还原
- 2、对象跟踪模块功能介绍
- 2.1 BSM跟踪
- 2.2 颜色跟踪
- 2.3 光流跟踪
- 2.4 KCF多对象跟踪
- 资源链接
引言
好久没写关于视觉的文章了,读研那会儿做了很多的小程序一直存在硬盘都吃灰了,这次我得把它们二次利用起来,拿出来晾凉,不然就有些浪费了,哈哈哈哈。
下面这个是本人读研期间做的一个小平台,当时还用它水了篇小软著,想着给自己评奖的时候多加点分来着,但最后也是没用到。
虽然现在看着挺简单的,但当时为了实现它还是耗费了我不少心思的,尤其是KCF多对象跟踪,直接通过界面框选某个物体来进行对象跟踪的这个操作,当时卡了好几天才弄出来,哈哈这个挺好玩的。
文章最后会附带资源获取链接——内含源码、使用视频等。
一、软件功能简介
视频读取与对象跟踪平台:
采用VS开发环境,C++编程语言,MFC框架搭建界面,调用opencv算法库开发。具有读取、暂停、恢复、保存、录制视频的功能,并通过多种对象跟踪算法对视频中的指定物体进行跟踪。所包含的对象跟踪算法有BSM跟踪,颜色跟踪,光流跟踪,KCF多对象跟踪等算法。
软件运行结果如下所示:
二、各个功能介绍
1、视频操作模块功能介绍
1.1打开视频
软件打开运行后,单击打开视频按钮,如下,会弹出对话框,可用来选择要打开的视频。选择的视频格式有avi、MP4等常用的视频格式。
如上选择bike.avi视频后,点击对话框的打开按钮,视频会显示在软件主界面的显示窗口上,如下所示
若打开的视频正处于播放阶段,不进行视频关闭则无法打开下一个视频,即在视频播放时再次点击打开视频按钮,则会弹出如下警告
1.2打开摄像头
点击打开摄像头时会打开电脑所连接的外置摄像头,当无外部链接的摄像头时会打开电脑本身自带的摄像头,电脑没有链接摄像头则报错。
打开摄像头时,主界面显示窗口如下:
1.3开始录制
当打开摄像头时,点击此开始录制按钮可以进行视频录制操作,点击开始录制按钮会弹出如下对话框,此处需要选择要录制的视频的保存路径,当录制完成时,录制好的视频会报保存在此路径下:
当点击下方的结束录制按钮时,在当前路径下可以看到保存的视频
若未打开摄像头,直接点击开始录制按钮,会弹出警告,如下
1.4结束录制
点击结束,若未开始录制按钮,直接打开此结束按钮,会弹出警示框如下
1.5暂停
当前若有视频运行,点击暂停按钮时,在播放中的视频或者正在录制的摄像头都会停止播放或录制操作。
若未读取视频或打开摄像头,直接打开暂停按钮,则会弹出警告如下
1.6恢复
当前由视频运行或者摄像头开启时,并且已经进行了暂停按钮的点击,选择恢复按钮可以恢复被暂停的视频播放或摄像录制操作。
若未读取视频或打开摄像头,直接打开恢复按钮,则会弹出警告如下
1.7关闭
若打开的视频正处于播放阶段,或者摄像头处于录制阶段,不进行关闭则无法打开下一个视频或摄像头,只有关闭当前视频或摄像头才可以打开下一个。
若当前未有视频播放或者摄像录制,直接点击关闭按钮,会弹出如下警示框
1.8还原
当打开的视频播放完成或者关闭时,点击此还原按钮会重新打开上一个视频进行播放。
2、对象跟踪模块功能介绍
2.1 BSM跟踪
BSM又称背景消去建模法, 消除背景建模就是找出视频中移动的区域,只能对运动的物体进行跟踪,跟踪效果如下
上方左侧为原始视频图像,当点击BSM跟踪按钮后,显示效果如右侧所示。
2.2 颜色跟踪
颜色跟踪,可以根据某个物体的特定的颜色进行跟踪,此处内置的是跟踪绿色,若是其他颜色物体跟踪可以更改内置颜色像素值来进行跟踪,如下所示
2.3 光流跟踪
光流法是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。在此处使用光流法跟踪并将跟踪的角点连续画出,效果如下
2.4 KCF多对象跟踪
当打开某个视频后,点击KCF多对象跟踪按钮,会弹出对象选择框如下
当我们使用鼠标点击拉伸时,可以框处我们想要的跟踪的某个物体,
然后点击enter键,再点击esc键,视频就可以继续运行,并且跟踪所选择的对象了,如下:
当然此KCF多对象跟踪可以不只跟踪某个对象,还可以跟踪多个对象,选择多个对象框住跟踪,如下:
资源链接
链接:https://download.csdn.net/download/qq_44870829/89618984
资源内容包含如下: