TLD matlab版代码运行调试
准备工作:安装好VS与opencv(我的版本是VS2015与opencv3.3.0)
1. 在命令行窗口输入mex -setup,显示如下即为成功
按照提示点击下面的 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文件
我这边出了一点小错误,显示:
查询原因后,在显示错误的文件中加上#include <minmax.h>,如图所示:
加上后运行complie.m,又出现了下面这个问题:
然后关掉工程,重新打开运行又可以了,我也不知道为啥(重启大法好,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 );
将红色的 0 的改成 status。
然后就可以成功运行啦~~~