TLD算法的视频http://www.tudou.com/programs/view/lQ3hPWFSefw/?resourceId=0_06_02_99。
TLD算法的作者是英国的捷克留学生Zdenek Kalal,作者网站的链接http://info.ee.surrey.ac.uk/Personal/Z.Kalal/。
他在网站的https://github.com/zk00006/OpenTLD地方提供了源代码下载。
下载过来的源代码是matlab版本的。要运行的话,电脑上必须要先安装Visual C++2010和matlab2010以及OpenCV2.3或OpenCV2.3.1。
首先要在Visual C++2010下安装OpenCV,具体的方法可以在网上找到很多。
然后在matlab里面运行mex -setup,选择Visual C++2010。
在matlab里把工作文件转到下过来的TLD源代码的文件夹。打开compile.m文件,把里面的对OpenCV的绝对路径改成自己在电脑上安装的OpenCV的路径。
在TLD中,lk和fern的cpp文件里面的
//#ifdef _CHAR16T
//#define CHAR16_T
//#endif
注释掉。
修改lk.cpp里面的cvCalcOpticalFlowPyrLK( IMG[J], IMG[I], PYR[J], PYR[I], points[1], points[2], nPts, cvSize(win_size,win_size), Level, 0 , 0, cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03), CV_LKFLOW_INITIAL_GUESSES | CV_LKFLOW_PYR_A_READY | CV_LKFLOW_PYR_B_READY );
改为cvCalcOpticalFlowPyrLK( IMG[J], IMG[I], PYR[J], PYR[I], points[1], points[2], nPts, cvSize(win_size,win_size), Level, status , 0, cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03), CV_LKFLOW_INITIAL_GUESSES | CV_LKFLOW_PYR_A_READY | CV_LKFLOW_PYR_B_READY );
initcamera.m里面的source.vid = videoinput('winvideo', 1, 'YUY2_640x480');要依据自己的摄像头修改,具体修改方法可以参考网上的“matlab调用摄像头”。
这时候,再依次运行compile.m,initcamera.m,run_TLD.m。就可以运行TLD程序了。但是,是一个摩托车手的视频跟踪视频。
如果想要改成从摄像头采集视频并进行跟踪的话,
修改run_TLD.m的opt.source = struct('camera',1,'input','_input/','bb0',[])。
这样子,就能成功运行TLD程序了。