TLD算法学习笔记——将程序跑起来
最开始的错误:
D:\PROGRA~1\MATLAB\R2010B\BIN\MEX.PL: Error: 'Files\OpenCV-2.2.0\vs2005_ForXue\include\opencv' not found.
??? Error using ==> mex at 208
Unable to complete successfully.
Error in ==> compile at 32
eval(['mex lk.cpp -O' include lib]);
第一行Error:'Files\...'其实已经露出个马脚,我的Opencv路径设置的是:
D:\Program Files\OpenCV-2.2.0\include
对照错误,发现只有|Files|被截取了出来。显然,这是典型的路径中含空格的错误。
而下面的"Error using..."应该是由此问题引发的错误,不用管。
将vs2005_ForXue文件夹整个拷贝到D盘的根目录下,再:
1.重新设置环境变量,将vs2005_ForXue\bin\目录添加到环境变量。
2.将compile.m文件中的libpath include两个变量重新设置。
再运行,出现:
error LNK2019: 无法解析的外部符号 _cvReleaseImage,该符号在函数 "void __cdecl normCrossCorrelation(struct _IplImage *,struct _IplImage *,struct CvPoint2D32f *,struct CvPoint2D32f *,int,char *,float *,int,int)" (?normCrossCorrelation@@YAXPAU_IplImage@@0PAUCvPoint2D32f@@1HPADPAMHH@Z) 中被引用
的错误。
这种错误显然是没有找到库文件,所以这些在lib中包含的函数也找不到。但是路径明明已
经设置了!
经过反复试验,发现在语句:
include = ' -ID:\vs2005_ForXue\include\opencv\ -ID:\vs2005_ForXue\include\'; libpath = 'D:\vs2005_ForXue\lib\';
中,每个路径后面的反斜杠是必不可少的,不然matlab识别不到正确路径!
改掉这两上错误就可以正常运行了。
最后总结:
单步调试很重要!正是在单步调试的过程中,发现在files变量在执行完:
files = dir([libpath '*.lib']);
语句后,竟然为:
files = 0x1 struct array with fields: name date bytes isdir datenum
是个0X1的结构体,这显然是不正确的,根据程序的走向,这里面应该是包含了所有的lib文件。
至于为什么为空,显然是目录的问题。手动使用dir函数进行测试,发现目录空格和最后反斜杠
的问题。
浙公网安备 33010602011771号