matlab源码下载运行出错,TLD算法(matlab和vc混编版本)源代码调试运行。不想再配第三遍了,异常苦闷。...

本文详细记录了在MATLAB R2011b、VS2010和opencv2.4.3环境下进行混合编程时遇到的挑战,包括MATLAB与VS版本兼容问题、opencv的安装配置问题、TLD运行中的问题以及VS2010及以上版本的代码修改。在解决编译器选择、opencv路径指定、编译错误和运行问题的过程中,作者提供了具体的步骤和注意事项,并分享了参考链接,为读者提供了一条清晰的解决路径。
摘要由CSDN通过智能技术生成

记得上次调试这个代码的运行环境,还是一年前。已经记不清楚上次是怎么调通的,只记得调的很痛苦。这次也一样苦闷……话不多说,进入主题。

首先需要在电脑上安装matlab、opencv、vs。

本人最终调试成功的版本为:matlabR2011b,vs2010,opencv2.4.3。

中间还有matlab2009,vs2008,opencv2.2,opencv2.3.1版本的调试,不过失败了……

第一个问题,matlab和vs版本的问题:

首先需要指出,ZK大神开放的源代码是matlab和vs混合编程的,因此需要配置一下matlab中的编译器环境。具体操作为:

在matlab的commond window中输入: mex -setup

然后会出现:

Please choose your compiler for building external interface

(MEX) files:

Would you like mex to locate installed compilers [y]/n?

选择y,回车,此时可能会出现

Select a compiler:

[1] Lcc-win32 C 2.4.1 in D:\PROGRA~1\MATLAB\R2009b\sys\lcc

[2] Microsoft Visual C++ 6.0 in D:\Program Files\Microsoft Visual

Studio

[0] None

Compiler:

提示选择编译器。假如这个时候没有发现自己安装的vs版本,选择0,回车,y,回车。重新输入 mex -setup,在出现:

Please choose your compiler for building external interface

(MEX) files:

Would you like mex to locate installed compilers [y]/n?

后选择n,回车,此时会出现更多的编译器,如下:

Select a compiler:

[1] Intel C++ 9.1 (with Microsoft Visual C++ 2005 SP1 linker)

[2] Intel Visual Fortran 10.1 (with Microsoft Visual C++ 2005 SP1

linker)

[3] Lcc-win32 C 2.4.1

[4] Microsoft Visual C++ 6.0

[5] Microsoft Visual C++ .NET 2003

[6] Microsoft Visual C++ 2005 SP1

[7] Microsoft Visual C++ 2008

[8] Microsoft Visual C++ 2008 Express Edition

[9] Open WATCOM C++

[0] None

Compiler:

一般情况下就会出现自己的编译器。

注意:matlab和vs有版本兼容的问题。比如matlab2009无法找到vs2010的编译器,但是matlab2011可以。所以会出现你用同样的操作方式,但是得到不同的结果。在无法找到编译器情况下,有网友通过自己手动指定编译器目录也ok了。但是我这样做了还是不行,时间关系就没有再调试这个问题,果断换了高版本的matlab。

以2008为例,具体操作为,

在上面的命令下,输入7,回车,会出现:

The default location for Microsoft Visual C++ 2008 compilers is

C:\Program Files\Microsoft Visual Studio 9.0,

but that directory does not exist on this

machine. Use C:\Program Files\Microsoft Visual Studio 9.0 anyway [y]/n?

此命令的意思是,是否确定路径。输入n,回车,再根据提示将自己的安装目录路径数据进去,后面的就不详述了。

第二个问题,opencv的安装问题

关于opencv的具体配置过程就不详述了,官网和网友的帖子有很详细的说明,但是这里我要说的问题是,opencv的安装路径。

在vs下配置opencv时,可以将其安装在任意路径下,自己也测试的opencv示例程序发现没有问题,但是在运行混编程序时却有可能提示各种问题。例如无法找到include....,无法打开....lib等等。打开TLD中的

compile.m 文件,可以发现两行代码,如下:

include = ' -Ic:\OpenCV2.2\include\opencv\

-Ic:\OpenCV2.2\include\';

libpath = 'c:\OpenCV2.2\lib\';

看到这里就明白了,该环境下的opencv路径是在m文件中指定的。需要把其中的路径改成自己opencv的路径及版本,例如include路径,我的是:

include = ' -ID:\opencv\opencv\build\include\opencv\

-ID:\opencv\opencv\build\include\

-ID:\opencv\opencv\build\include\opencv2\';

需要注意的是,这中间的任何一个空格都可能出现错误。

例如,假如 include = ' -ID:\opencv\opencv\build\include\opencv\

-ID:\opencv\opencv\build\include\

-ID:\opencv\opencv\build\include\opencv2\';中,-ID前面的空格少了,会出现MEX错误。

注意:甚至opencv的安装路径中的空格都可能导致错误。例如:opencv的安装路径在 program files

中,在 -ID中指定路径后,在编译时会出现无法找到inlude文件。个人猜测原因是

program files

中间的空格,matlab会认为是两个路径。解决办法,把opencv拷贝到另一个路径下,在complie.m文件中指定新的opencv路径,而不需要修改原有的opencv配置和环境变量,本人最后就是这样搞定的。

第三个问题,TLD的运行。

在运行complie.m之前,需要在matlab底下用mex设置编译器,命令是

mex -setup 。中间可能遇到的问题见第一条。

这样配置完后,先运行compile.m,编译无错误后再运行TLD,正常情况下就ok了。

还有可能会遇到一些并非混编环境的乱七八糟的小问题,例如可能是matlab版本中有些函数和ZK用的不一样,需要做一些小的调整,根据提示的错误做一些修改。

第四个问题,vs2010及以上版本,需要对lk.cpp fern.cpp bb_overlap.cpp修改,将其中的

#ifdef _CHAR16_T#define CHAR16_T

#endif

再修改掉这一行代码,总算是可以正常运行了。

ZK大神在run_TLD中留下了数据源的接口,稍微修改一下就可以根据自己的兴趣和需要开始测试啦。

本人在调试的时候参考链接如下:

还有几个配置的链接,比较多就不一一放了。在此对网友表示感谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值