matlab和C/C++混合编程--调用opencv

最近的我们已经将整个项目搭起来了,项目比较复杂。由于我们做的是检索系统,所以我们用asp.net(c#)做了网页,但是算法的实现是在matlab下,所以我们不得不用matlab生成动态链接库dll,然后用c#调用matlab,单单这个配置问题就搞了我们一个多星期,不过还是顺利解决了,解决方法以后有时间再写个博客出来。

  虽然我们整个项目已经能在c#下跑通了,但是检索效果真不理想,检查各种可能出现问题的地方,首先自然是特征的问题。我们做的是偏图像的检索,有些现成的特征提取算法是在opencv下实现的,需要借助opencv来实现特征的提取,因此我们要利用matlab来调用opencv。

  上次的那个博客已经说了如何用mex来实现混合编程,同样如果c++代码中调用了opencv库的话,用mex编译的时候就不再像之前那么简单。由于手头上有MacOS和Windows两个系统,下面我分别对此讲述如何利用mex编译带opencv调用的c++代码。

  首先我用的matlab版本是matlab2012a 64bit,opencv的版本是用homebrew安装的(具体版本忘记了)


MacOS

  在苹果系统下,我是参考这位同学的工作:http://vision.is.tohoku.ac.jp/~kyamagu/software/mexopencv/,但是由于OS X的环境会和matlab自带的库冲突。In OS X environment, runtime error can happen when the version of your system library conflicts with matlab's internal library. 我的冲突就是DCHAR16_T的重复宏定义,因此我和那篇文章的配置方法略有不同。

OS X 10.9 and XCode 5

Due to the change in the default C++ runtime in OS X 10.9, you probably need to tweak a few configurations in mexopts.sh to avoid compile issues. If you haven't run mex -setup in Matlab, please do so first and edit mexopts.sh and change a few variables. Following shows an example.

上面这段话是原封不动的复制与粘贴,然后他给出的办法是修改/Applications/matlab/MATLAB_R2012a.app/bin/mexopts.sh文件(这段路径是我自己的),如何修改这个文件,他给出了一个办法,但是这里我的修改略和他不同,请注意。首先打开mexopts.sh文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值