两天调试TLD源码,终于通了。感觉有必要写下经验帮助其他人,不要再走弯路,顺利调通TLD。直奔主题吧!
大神Zdenek Kalal的TLD(MATLAB+c混合编程)源码下载地址: https://github.com/zk00006/OpenTLD;
首先,你的电脑需要安装MATLAB,OpenCV,Visual Studio。我电脑安装的32位的MATLAB2014a,OpenCV3.0,和Visual Studio2013。
个人感觉64位MATLAB的混合编程调试太麻烦,而且我也没有成功,索性装了32位的,然后开始了艰辛的调试历程。
Visual Studio2013是VS12,vs的版本要比MATLAB的低不然可能会出现MATLAB无法使用vs的编译。
安装完OpenCV3.0需要进行系统环境配置,右键单击计算机->属性->高级系统设置->环境变量->系统变量 Path:添加D:\opencv\build\x86\vc12\bin;
添加时用‘;’与已有的文件名隔开,其中'D:\'为你的OpenCV安装路径,记得改为自己的路径,我安装路径的是E:\opencv3\opencv\build\x86\vc12\bin。这一步有问题的话可以自己查百度。
配置完成以后进行编译,将脚本compile.m文件中的if ispc 后面的 include libpath 修改为自己OpenCV的路径。我的OpenCV安装在‘E:\opencv3’下,所以我的修改为:
include ='-Ie:\opencv3\opencv\build\include\ -Ie:\opencv3\opencv\build\include\opencv\ -Ie:\opencv3\opencv\build\include\opencv2\';
libpath ='E:\opencv3\opencv\build\x86\vc12\lib\';
然后点开mex文件夹,对于vs2010以上版本需要,将文件lk.cpp, fern.cpp,bb_overlap.cpp, 头文件中的
// #ifdef_CHAR16T
#define CHAR16_T
#endif
这三句话注释掉。运行compile.m,编译完成;
然后运行run_TLD.m,没有报错,那么恭喜你;
如果提示错误:matlab **. mexw32 不是有效32文件,
参考:https://github.com/zk00006/OpenTLD/issues/24;将E:\opencv3\opencv\build\x86\vc12\bin文件夹下的文件全部考到TLD文件夹\OpenTLD-master\下就OK啦!
其实很简单对不对,只是一开始啥都不知道,一直报错,浪费了大把时间,欲哭无泪啊。。。