首先声明一点,VS2012不分32bit版本还是64bit版本,其既支持32bit的编译也支持64bit的编译
TLD原作者貌似采用了OpenCV2.2和VS2008版本进行编译,这在我们目前看起来有点老,尤其是目前我都使用了OpenCV3.0了,OpenCV3.0至少看起来有个明显的好处,生成的库少了,貌似对CUDA进行了更好的支持。
首先需要有相互配合的VS和matlab,我选择了matlab2013b-64bit和VS2012(后来我发现matlab2013b的mcc由于可能没有完美破解用不了,故改用了matlab2013a),因为OpenCV3.0默认不带VS2010的编译好的库,所以选用了VS2012,当然你也可以用VS2010自己编译出来。
Step1:在matlab中输入mex -setup,选择编译器即可。
然后将主目录打开到TLD,修改文件compile.m:
include = ' -IF:\software\opencv\build\include\opencv\ -IF:\software\opencv\build\include\opencv2\ -IF:\software\opencv\build\include';
libpath = 'F:\software\opencv\build\x64\vc11\lib\';
这个要根据自己的OpenCV3.0安装目录进行修改。
Step2:接着要修改lk.cpp, fern.cpp, and bb_overlap.cpp:将其中的
#ifdef _CHAR16_T
#define CHAR16_T
#endif
这三行comment掉。
然后运行TLD的compile,即可编译出。
Step3:
这个时候在运行之前记得把OpenCV3.0的dll:opencv_ffmpeg300_64.dll,opencv_world300.dll,opencv_world300d.dll拷贝到OpenTLD-master\mex目录下,然后输入run_TLD就可以看到跟踪结果了。这里当然也可以设置OpenCV的环境变量PATH,但是我一直对这种方法是嗤之以鼻的,我希望保持工程的独立型,这样在将工程拷贝给别人的时候可以不用考虑对方的OpenCV环境。
参考:
https://github.com/zk00006/OpenTLD/wiki/Installation
http://m.blog.csdn.net/blog/zhuzhudeailnn_11109/8853585