TLD matlab版代码运行调试

准备工作:安装好VS与opencv(我的版本是VS2015与opencv3.3.0

1. 在命令行窗口输入mex -setup,显示如下即为成功

TLD matlab版代码运行调试

按照提示点击下面的 mex -setup C++ 

2. 打开compile.m文件,将源代码中的:

include = ' -Ic:\OpenCV2.2\include\opencv\ -Ic:\OpenCV2.2\include\';
libpath = 'C:\OpenCV2.2\lib\';

改为自己的路径,例如我的是:

include = ' -IE:\opencv\build\include\opencv\ -IE:\opencv\build\include\ -IE:\opencv\build\include\opencv2\';
libpath = 'E:\opencv\build\x64\vc14\lib\';

3. 进入mex文件夹下的lk.cpp, fern.cpp, 和 bb_overlap.cpp,要注释如下所示的几行代码:

//#ifdef _CHAR16T

//#define CHAR16_T

//#endif

4.运行complite.m文件

我这边出了一点小错误,显示:

TLD matlab版代码运行调试

查询原因后,在显示错误的文件中加上#include <minmax.h>,如图所示:

TLD matlab版代码运行调试

加上后运行complie.m,又出现了下面这个问题:

TLD matlab版代码运行调试

然后关掉工程,重新打开运行又可以了,我也不知道为啥(重启大法好,MATLAB小白瑟瑟发抖):

TLD matlab版代码运行调试

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 );

将红色的 的改成 status

然后就可以成功运行啦~~~