1

我正在根据https://github.com/zk00006/OpenTLD/wiki/Installation上显示的说明安装 TLD 应用程序

使用:

OpenCV 2.4.2

Matlab R2010b x 64 位

WIN7×64

VS2010 专业版

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

" PC 创建库 C:\Users\Ko\AppData\Local\Temp\mex_VUBK1k\templib.x 和对象 C:\Users\Ko\AppData\Local\Temp\mex_VUBK1k\templib.exp

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

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

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

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

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

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

lk.mexw64 : 致命错误 LNK1120: 6 unresolved externals

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

???在 208 处使用 ==> mex 时出错,无法成功完成。

==> 编译时出错 32 eval(['mex lk.cpp -O' include lib]);

"

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

4

1 回答 1

2

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

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

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

2 - 如果您有 x64 系统,带有 64 位 Matlab (2011) 和 64 位 C++ 编译器,您将需要通过“mex”编译器选项选择 32 位编译器。我使用了 MSVC C++ 9.0 32 位编译器。

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

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

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

于 2012-10-14T06:39:19.770 回答