【目标跟踪系列】Struck: Structured Output Tracking with Kernels(代码调试运行篇)

转载请注明引用自:https://mp.csdn.net/postedit/80103496

由于最近在研究目标跟踪问题,翻阅了相关资料,觉得有必要整理个系列文章来记录目标跟踪方面的点滴;

谈到跟踪,目前较为流行的是相关滤波和基于深度学习方面的两大块;

Struck虽然是多年前提出的算法,但在目标跟踪方面实数经典。

 

 

 

本文简单粗暴,直接运行调试作者源代码。

作者对源代码最近一次更新是在2015年,地址:https://github.com/samhare/struck

 

将下载的struck-master.zip包解压生成struck-master 文件夹;

【目标跟踪系列】Struck: Structured Output Tracking with Kernels(代码调试运行篇)_第1张图片

第一步: 用CMake编译 下载的代码

在编译之前,有必要先提下 需要安装Eigen 这个方便处理矩阵类运算效率的C++库文件;本文下载的是V3.2.6版本  (建议V3以上版本);Eigen其下载地址是:http://eigen.tuxfamily.org/index.php?title=News:Eigen_3.1.3_released!

我将下载并解压后的eigen内容文件放在一个新建文件夹Eigen下;不需要你编译,只要放在某个路径,记住该路径,后续cmake编译时要用到。

 

下图是我的编译配置信息,将相应的路劲更改成你的就行,前提是你下载解压完eigen库和编译配置完opencv了,然后configure和generate完成,搞定编译了。

 

 

 

 

【目标跟踪系列】Struck: Structured Output Tracking with Kernels(代码调试运行篇)_第2张图片

编译完成,会在编译路径下生成个sln解决方案,用对应的编译器平台打开,我用的是VS2015, (PS:opencv是2.4.13);用VS打开后按F5运行即可,建议实在release下,这样运行速度快些。在运行过程中可能会提示“M_pi的定义问题”,请在对应文件的开始处include一下math.h,在这个头文件中有定义π的具体数字的,即#include;或者自己define一下等于3.1415926

【目标跟踪系列】Struck: Structured Output Tracking with Kernels(代码调试运行篇)_第3张图片

 

 

第二步 运行编译生成的exe文件;

在完成以上操作后,会在build文件夹下生成一个bin文件夹,bin>Release下 (我是用VS的release运行的)会生成一个struck.exe可执行文件;

我在这个目录下写了一个cmd(或bat)文件,内容如下;其中必须制定config.txt文件目录,由于我拷贝到release下,所以最好是struck.exe config的路径/config.txt 这么写;

【目标跟踪系列】Struck: Structured Output Tracking with Kernels(代码调试运行篇)_第4张图片

 

 

现在重点讲下config.txt文件内容怎么写。

将官网下载解压后的config.txt文件打开并做一些如下更改:替换你的测试图像的基路径,图像序列名

 

 

【目标跟踪系列】Struck: Structured Output Tracking with Kernels(代码调试运行篇)_第5张图片

测试样例的图像请在该链接下载:http://vision.ucsd.edu/~bbabenko/project_miltrack.html

这个OK的: https://bbabenko.github.io/miltrack.html

 

我参照官网的默认,下载了girl图像序列,并解压在一个新建的girl文件夹下;其中XXXX/Struck/sequence就是上图的基准路径,girl是sequence name;这些依据自己的更改;

【目标跟踪系列】Struck: Structured Output Tracking with Kernels(代码调试运行篇)_第6张图片

 

 

 

最后运行下test.cmd 就OK了,出现结果:

【目标跟踪系列】Struck: Structured Output Tracking with Kernels(代码调试运行篇)_第7张图片

你可能感兴趣的:(C/C++,目标跟踪系列)