TLD算法matlab版本的程序调试

看了很多大神文章,综合了一下,终于搞定了。。。
64位win10 + visual studio 2015 + opencv 320 + matlab r2014b
具体opencv如何配置不多说了,记得在realese和debug下都要配置就行。。。

1.在matlab里面运行mex -setup,选择 C++。
2.在matlab里把工作文件转到TLD源代码的文件夹。打开compile.m文件,把里面的对OpenCV的绝对路径改成自己在电脑上安装的OpenCV的路径。
我的是:

include = ' -ID:\opencv\build\include\opencv\ -ID:\opencv\build\include\opencv2\ -ID:\opencv\build\include\';
libpath = 'D:\opencv\build\x64\vc14\lib\'; 

3.然后点开mex文件夹,对于vs2010以上版本需要,将文件lk.cpp, fern.cpp,bb_overlap.cpp, 头文件中的

#ifdef_CHAR16T
#define CHAR16_T
#endif

这三句话注释掉。

4.将 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 );

5.运行compile.m,编译完成;然后运行run_TLD.m即可。

6.如需要用摄像头完成图像采集。将initcamera.m里面的

source.vid = videoinput('winvideo', 1, 'YUY2_640x480');

要依据自己的摄像头修改,具体修改方法可以参考网上的“matlab调用摄像头”。
修改run_TLD.m的

opt.source   = struct('camera',1,'input','_input/','bb0',[])

这时候,再依次运行compile.m,initcamera.m,run_TLD.m。即可运行TLD程序了。

参考链接:
http://blog.csdn.net/lt_1105/article/details/52382542
http://blog.csdn.net/ilekoaiq/article/details/8050536

点赞