visual-studio - 为 TLD 运行 compile.m 时出错

标签 visual-studio matlab opencv tld

我正在根据 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/

相关文章:

c++ - Visual Studio 不包含 header

c++ - 我可以将 Visual Studio 编译器设置为符合特定版本的 c++ 吗?

java - Android:无法启动 Activity ComponentInfo{/com.}:android.view.InflateException:二进制 XML 文件第 6 行:膨胀类时出错

python - 如何使用掩码计算直方图 OPENCV?

c++ - 如何在 Visual Studio 2008 中创建自定义清理(清理后)事件?

javascript - 包含 TypeScript 的解决方案使用 VS2013 不断加载

matlab - GAMS显示风格

使用 mxArray 的 C++ 动态内存分配

java - 如何在Mac 10.9.4(其实就是Mac虚拟机)上安装Matlab R2014a?

python - 在使用 OpenCv 进行图像处理期间保留字符顺序