对应论文:Tomas Vojir, Jana Noskova and Jiri Matas, “Robust scale-adaptivemean-shift for tracking“. Pattern Recognition Letters 2014.
github地址:https://github.com/vojirt/asms
实现环境:Win7 64位+ Visual Studio 2015 + Opencv3.1.0
该算法是基于尺度自适应的mean-shift追踪算法,在追踪过程中,会根据追踪物体的尺寸变化做出相应的调整。
新建win32控制台应用程序,空项目。将下载下来的asms-master压缩至某处。
1. 添加头文件,将asms-master文件夹下的src文件夹下的文件添加至“头文件”,如下:
2. 新建cpp源文件,将asms-master文件夹下的main_demo.cpp里面的代码拷贝至新建的cpp源文件中,在原来程序的基础上添加两个头文件:
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
3. 右键项目属性,
1)添加包含目录,主要是包含opencv下的include文件夹和asms-master下的src文件夹。我的如下:
2)添加库目录。将opencv下的lib库路径添加下来。我的如下:
3)添加附加依赖项(配置属性--连接器--输入),Release模式下添加opencv_world310.lib,Debug模式下添加opencv_world310d.lib。
运行程序
该程序是调用电脑的摄像头,选择摄像头采集的图像中的物体,系统便开始追踪。按Esc键退出程序。
我稍微修改了一下程序,使得可以读取视频文件。效果如下:(第一幅图像为手动选择的追踪物体,后两幅图像为效果)
说明:
1. 分别在x64 Debug模式和x64 Release模式下运行了,Debug模式下运行很慢,几秒更新一帧,Release模式下速度快了很多。
2. 使用上面那个视频测试的时候,会发现有时候会跟踪不准确以及丢失情况,如下:
作者给的测试速度如下(以ms为单位):