matalab2010、vs2010、opencv库混编!

本文记录了作者在使用Matlab2010与Visual Studio2010进行OpenCV库混编,调试视频目标跟踪算法DSST时遇到的问题及解决过程,尽管最终未调试成功。
摘要由CSDN通过智能技术生成

 我是做视频目标跟踪的, 最近在调试算法DSST的代码(matalab)时,第一次遇到了  matalab  vs  opencv混编的情况,在此我把调试的过程中遇到的问题做一下记录!(虽然最终还是没有调试成功

一 遇到的问题和解决的办法

 DSST是matalab程序,但是同时也包含有.cpp和.hpp文件,而在这俩c++程序中同时也调用了opencv库,我下载完整    的程序,是作者已经整理好的程序,就是说只要下载了这个程序就可以直接用,前提是电脑得是64位的,而我的电脑    不巧是32位的,所以程序不能运行。在经过查阅资料后发现


在红色框内的是gradientMex.cpp和mexResize.cpp两个.cpp文件,而mexw64是在matalab中编译.cpp生成的,而mexa64是在lniux环境下编译生成的文件,我需要的是matalab生成的文件,则mexa64文件我是不需要的,我只需要mexw文件,但是这些文件都是64位的,在我32位的电脑中是不能运行的。所以,当前我需要做的是对这两个.cpp文件重新编译,生成32位的相应文件。

二 具体步骤

1  因为是c/c++程序、matalab、opencv混编,所以vs 和opencv是必不可少的(ps:我的vs2012  opencv2.4.9、matalab2010),opencv的配置我就不多说了,网上资料多的是。说正题:
(1)在matalab的command window中输入mex -setup,显示Would you like mex to locate installed compilers [y]/n? 输入y,如下图所示:

这时会发现编译器只有【1】[1] Lcc-win32 C 2.4.1 in D:\MATALA~1\sys\lcc ,而没有vs编译器,经我查阅资料后,推荐使用vs的编译器,但是我的matalab并没有和vs关联上,该怎么办?解决的办法有两个 a:找到关联所需要的文件,添加到matalab中,针对vs2012、vs2013我已经上传了这些文件并配有说明 点击打开链接,b:下载高版本的matalab, matalab的版本最好比vs的版本高一级(ps:也可以参考http://blog.csdn.net/macong01/article/details/41356081
 (2)按(1)操作完后,就可以在matalab中找到vs的编译器了,重新mex  -setup,如下图所示:选取相应编译器前的标号,例如我使用的是3。

(3)经过(1)(2)后,就可以把环境配置好了,就可以进行编译了

2 编译的过程

(1)要想在matalab中调用c/c++程序,则在写.cpp文件时,必须得按照符合matalab的编程方式(mexfunction)进行改变,这里多的也就不多说了,网上资料也很多。
(2)新建.cpp文件(可以建个.txt文件,然后把后缀改成.cpp),把程序按照matalab的编程方式进行改写。改好后,在matalab中打开并进行编译,在当前目录下进行编译,写这篇文档的时候我是刚开始接触matalab,所以一直不明白当前目录是什么意思,直到出现如下错误:

然后选中rectifyImageE.cpp右击,点open selection,会提示

然后点是,此时matalab会创建该文档,很长时间我才明白这个文档的位置才是当前目录,所以把之前的程序拷贝到这个文件中(ps:我是matalab菜鸟,这个问题或许还有其他解决办法),若是不包含opencv库,则在此时编译完后,会已经生成mexw的文件,把该文件和源文件同时放到matalab项目中,就可以运行了。但是如果 程序中包含上了opencv库,则在mex时,是需要把opencv的路径也包含上,例如:

mex OpenCVShowImage.cpp -IF:\3rdlibs\OpenCV\include -LF:\3rdlibs\OpenCV\lib -lopencv_core244 -lopencv_imgproc244 -lopencv_highgui244 

其中OpenCVShowImage.cpp是项目名,-I  -L  -l 后面的代表的是opencv库的路径(根据自己的位置改写), 
其中-IF:\3rdlibs\OpenCV\include,告诉编译器可以在F:\3rdlibs\OpenCV\include这个目录进行头文件的查找;
-LF:\3rdlibs\OpenCV\lib,告诉链接器可以在F:\3rdlibs\OpenCV\lib这个目录进行库文件的查找;最后三个参数表面我们写的源代码需要链接opencv_core249、opencv_imgproc249和opencv_highgui249这三个OpenCV的静态库。
经过上述操作后,当前目录下同样会生成mexw文件。所有的工作也就完成了

上述文档是根据自己的理解写的,如若有不当之处还请指正!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值