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函数进行测试,发现目录空格和最后反斜杠

的问题。

posted on 2011-10-04 20:55  LateStop  阅读(5926)  评论(6)    收藏  举报

导航