matlab opencv C++ mex

前言:前面写过一篇 “Matlab OpenCV混合编程” 提到了三种方法。其他两种方法用起来比较方便,但速度就上不去,至少在我的电脑跑的感觉是这样。这一个星期一直在用mex cpp的方法,可参考了网上很多博客,但按照他们的方法来,并修改相应的路径就是出不来结果。现在记录下遇到的问题和“解决方法”,但也有一些想不明白的地方。

系统及软件配:

windows7:64位

VS2013

matlab2015a 64位

opencv2.4.9

1、路径等相关配置

这里自行搜索怎么添加 opencv 的系统路径,以及在VS配置相关路径,这里提供一个参考的链接1吧 

参考连接去配置就好,注意改成自己相应的地址跟版本号,链接中提到,如果找不到opencv_core249d.dll等类似的文件,就重启下电脑,或者按照链接中的第六步去做。

如果要用相对路径的话,可以参考链接2


问题:找不到各种头文件,如“highgui.hpp” 

解决思路和方法:

一般加入的都是这三个路径

...\opencv\build\include

...\opencv\build\include\opencv

...\opencv\build\include\opencv2 


注意看opencv和opencv2下面的头文件

如果引用头文件 “cv.h”, "highgui.h", "cxcore.h"等都没问题,因为这些 ".h" 的头文件直接就在opencv中,但如果直接#include "highgui.hpp" 则会出现找不到头文件的问题

因为“highgui.hpp” 文件是在opencv2中highgui文件夹下面,这时候应该改成#include "opencv2\highgui\highgui.hpp" 。

其他相应的头文件而根据上面的例子去改吧。


参考文献:

http://blog.csdn.net/poem_qianmo/article/details/19809337

http://blog.csdn.net/ggz631047367/article/details/37914681

2、mex

a)之前在windows编译 tld 的源程序,本来想在tld上面直接改的,发现有问题;

b)另外,有不少教程说修改mexopt.bat文件,但新版本matlab没有这个文件了,虽然也可以通过在matlab的命令窗口执行 “fullfile(prefdir,'mexopts.bat')”命令来找到mexopt.bat的路径,但被另外一个文件替代了。这个路径是被隐藏起来的。

c)后面参考了其他的博客等,都能编译出文件来,但总是出不来结果。后面看到文献[3] ,虽然也出不来结果,但猜测了一下,再修改就没问题了。下面直接给出make文件的写法再来说明自己遇到的坑

% This cppmake.m is for MATLAB
% Function: compile c++ files which rely on OpenCV for Matlab using mex

% Matlab and C++ mixed programming(dependent on opencv library)
% First step(before exeuting this program): use "mex -setup" to choose your c/c++ compiler
clear all;
clc;

% Get the architecture of this computer
is_64bit = strcmp(computer,'MACI64') || strcmp(computer,'GLNXA64') || strcmp(computer,'PCWIN64');

%------------------------------------------------------
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值