All Right。
step1. 现在我们有OpenTLD-Master的代码放在:C:\Users\Administrator\Documents\MATLAB\OpenTLD-master\mex。
step2. 根据《在VS2013中调试mex文件》,我们需要重新修改TLD中的compile.m,将原来的mex改为mex -g。
if ispc
disp('PC');
include = ' -Id:\opencv\build\include\opencv\ -Id:\opencv\build\include\';
libpath = 'd:\opencv\build\x64\vc12\lib\';
files = dir([libpath '*.lib']);
lib = [];
for i = 1:length(files),
lib = [lib ' ' libpath files(i).name];
end
eval(['mex lk.cpp -O -g' include lib]);
mex -O -c -g tld.cpp
mex -O -g fern.cpp tld.obj
mex -O -g linkagemex.cpp
mex -O -g bb_overlap.cpp
mex -O -g warp.cpp
mex -O -g distance.cpp
end
step3. 运行compile.m,显示编译成功。
step4.打开VS2013,我在这里重建了DLL项目,把lk.cpp等文件加入。设置包含目录、库目录,将工程改为x64,等等....(见《基于OpenCV的mex文件及其编译》)。
step5.Ctrl+Alt+P,添加matlab进程。回到Matlab,运行run_TLD.m。
但此时仍然是无法进入中断的,VS中的断点显示警告“不会进入断点,因为未加载符号”。我再这里退出调试。
step6.重新回到Matlab,在mex目录下,运行lk(0),能正确运行。重新回到step5。能正确设置断点。
可以对TLD的lk.cpp进行Debug了。
发现csdn同行对TLD学习的资源汇总:http://blog.csdn.net/windtalkersm/article/details/8018980,写的非常好,在这里感谢他。