我正在根据 https://github.com/zk00006/OpenTLD/wiki/Installation 上显示的说明安装 TLD 应用程序
使用:
OpenCV 2.4.2
Matlab R2010b x 64 位
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:函数“void __cdecl normCrossCorrelation(struct _IplImage *,struct _IplImage *,struct CvPoint2D32f *,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 *,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: fatal error LNK1120:6 个未解析的外部
C:\PROGRA~1\MATLAB\R2010B\BIN\MEX.PL: 错误:'lk.mexw64' 链接失败。
???在 208 使用 ==> mex 时出错 无法成功完成。
错误 ==> 在 32 处编译 eval(['mex lk.cpp -O' include lib]);
”
我在很多网站上搜索过,但无济于事。希望有人能启发我解决这个问题。非常感谢所有解决方案。
最佳答案
如果您已仔细阅读说明并按照说明进行操作,那么您一定已经创建了 .mex 二进制输出文件。那就是编译包含 opencv 代码的 mex 文件。您收到错误是因为您无法正确编译它们。检查 mex32 文件的文件夹。
下面是完成编译和成功运行的步骤,希望对你有用
1 - 安装 OpenCV 2.2,不超过 2.2。如果您尝试这样做,这会变得很疯狂。并将其安装到 C:/OpenC2.2,确保不使用任何空格。 Spaces 使 Matlab 中的路径搜索变得 coo coo。实际上,空格在 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 很酷!
关于visual-studio - 为 TLD 运行 compile.m 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12879786/