一、下面是TLD的博客主页,上面写了TLD算法的演变和其相关的文章,以及C++代码下载链接
1.1、Tracking-Learning-Detection[Project][OpenTLD/C++ Code]
1.2、下载得到的C++代码如下所示
其中:
datasets是一些视频数据;
doc是程序的流程图进行说明;
include是头文件;
src是源文件;
parameters.yml是参数文件;
readme是程序运行说明。
二、我们只要用到datasets、include、src、parameters.yml;
下面讲述如何在VS2013下创建工程;
2.1、创建一个空的solution(没有预编译的控制台程序)
2.2、首先将include中的文件拷贝放到src的文件夹中;然后将src、datasets、parameters.yml放到solution的工程目录下,如下所示:
2.3、编译项目,此时会冒出错误,下面为解决方法:
a、首先将头文件包含错误的全部由include<TLD.h> 改成 include "TLD.h";其他的头文件包含以此类推;
b、在TLD.h中包含头文件#include <opencv2/legacy/legacy.hpp>;
至此,所以的错误就都解决了,但是我们发现这个项目是里面是先产生一个可执行文件在cmd下来执行。这样不方便我们调试;
因此我们要修改程序一开始的参数解析函数;
在mian函数前面定义一下函数;
void read_options2(VideoCapture& capture,FileStorage &fs)
char* parameterB="datasets//06_car//init.txt";
readBB(parameterB);
gotBB = true;
string videoS = "datasets//06_car//car.mpg";
capture.open(videoS);
fromfile = true;
string parameterP="parameters.yml";
fs.open(parameterP, FileStorage::READ);
}
{
readBB(parameterB);
gotBB = true;
capture.open(videoS);
fromfile = true;
fs.open(parameterP, FileStorage::READ);
然后在mian函数中注释掉read_options(argc,argv,capture,fs);这个函数
而添加上read_options2(capture,fs);这个函数,至此,程序就可以正常的运行了。但是程序特别慢。还要进行优化。
参考http://m.blog.csdn.net/blog/zebincai/12390549