看了很多大神文章,综合了一下,终于搞定了。。。
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程序了。