我正在根据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]);
“
我搜索过很多网站,但无济于事。希望有人可以在这个问题上给我启发。非常感谢所有解决方案。
答案 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很酷!