为TLD运行compile.m时出错

时间:2012-10-14 06:16:42

标签: visual-studio matlab opencv tld

我正在根据https://github.com/zk00006/OpenTLD/wiki/Installation

上显示的说明安装TLD申请

使用:

OpenCV 2.4.2

Matlab R2010b x 64bits

Win7 x 64

VS2010专业版

一切正常,直到我执行此步骤“6)在Matlab中,运行compile.m”

” 个人计算机 创建库C:\ Users \ Ko \ AppData \ Local \ Temp \ mex_VUBK1k \ templib.x和对象C:\ Users \ Ko \ AppData \ Local \ Temp \ mex_VUBK1k \ templib.exp

lk.obj:错误LNK2019:函数中引用的未解析的外部符号cvReleaseImage“void __cdecl normCrossCorrelation(struct _IplImage *,struct _IplImage *,struct CvPoint2D32f *,struct CvPoint2D32f *,int,char *,float *,int,int) “(?normCrossCorrelation @@ YAXPEAU_IplImage @@ 0PEAUCvPoint2D32f @@ 1HPEADPEAMHH @ Z)

lk.obj:错误LNK2019:函数中引用的未解析的外部符号cvMatchTemplate“void __cdecl normCrossCorrelation(struct _IplImage *,struct _IplImage *,struct CvPoint2D32f *,struct CvPoint2D32f *,int,char *,float *,int,int) “(?normCrossCorrelation @@ YAXPEAU_IplImage @@ 0PEAUCvPoint2D32f @@ 1HPEADPEAMHH @ Z)

lk.obj:错误LNK2019:函数中引用的未解析的外部符号cvGetRectSubPix“void __cdecl normCrossCorrelation(struct _IplImage *,struct _IplImage *,struct CvPoint2D32f *,struct CvPoint2D32f *,int,char *,float *,int,int) “(?normCrossCorrelation @@ YAXPEAU_IplImage @@ 0PEAUCvPoint2D32f @@ 1HPEADPEAMHH @ Z)

lk.obj:错误LNK2019:函数中引用的未解析的外部符号cvCreateImage“void __cdecl normCrossCorrelation(struct _IplImage *,struct _IplImage *,struct CvPoint2D32f *,struct CvPoint2D32f *,int,char *,float *,int,int) “(?normCrossCorrelation @@ YAXPEAU_IplImage @@ 0PEAUCvPoint2D32f @@ 1HPEADPEAMHH @ Z)

lk.obj:错误LNK2019:函数mexFunction中引用的未解析的外部符号cvCalcOpticalFlowPyrLK

lk.obj:错误LNK2019:函数mexFunction中引用的未解析的外部符号cvAlloc

lk.mexw64:致命错误LNK1120:6个未解析的外部

C:\ PROGRA~1 \ MATLAB \ R2010B \ BIN \ MEX.PL:错误:'lk.mexw64'的链接失败。

???使用==>时出错梅克斯208 无法成功完成。

==>中的错误编译在32 eval(['mex lk.cpp -O'include lib]);

我搜索过很多网站,但无济于事。希望有人可以在这个问题上给我启发。非常感谢所有解决方案。

1 个答案:

答案 0 :(得分:2)

如果您已仔细阅读说明并遵循它们,则必须已创建.mex二进制输出文件。那就是编译包含opencv代码的mex文件。您正在收到错误,因为您无法正确编译它们。检查文件夹中的mex32文件。

以下是完成完整编译和成功运行的步骤,希望这对你有用

1 - 安装OpenCV 2.2,不超过2.2。如果你试图这样做会变得疯狂。并将其安装到C:/OpenC2.2,制造商确保您不使用任何空格。 Spaces在Matlab中进行路径搜索。实际上空间在Matlab中被分解。

2 - 如果你有一个x64系统,64Bit Matlab(2011)和64Bit C ++编译器,你需要通过'mex'编译器选项选择一个32位编译器。我使用了MSVC C ++ 9.0 32位编译器。

3 - 选择编译器后,进行编译。您必须有一个成功的编译。尝试使用编译器的调试标志,一旦编译完成,您将获得输出。如果发生任何错误,请尝试修复它们。

4-这意味着不要改变在OpenTLD中设置的任何路径来查找OpenCV2.2 - 这是最棘手的部分。您可以在任何地方安装openTLD。只需确保您已选择32位C ++编译器。不是64位。

完成上述操作后。你应该能够跑步。第一次运行后,OpenTLD很酷!