matlab 编译 mex 含有OPenCv函数的Cpp文件

matlab mex含有OPenCv的Cpp时有2个方案:

1.向mexopts.bat (if windows)/mexopts.bat(if linux)文件中添加OpenCv include files and libraries.

eg.参见:http://blog.csdn.net/climbingc/article/details/6762424

2.mex  command 中直接调用libraries and include path. 

e.g。参见:http://blog.csdn.net/raodotcong/article/details/8785358

mex facedetection.cpp -I"D:\Program Files\opencv2.4.3\build\include" -I"D:\Program Files\opencv2.4.3\build\include\opencv" -L"D:\Program Files\opencv2.4.3\build\x64\vc9\lib" -lopencv_core243 -lopencv_highgui243 -lopencv_imgproc243

 

 

@@@@@注意已经默认在环境变量中将OpenCV的dll文件所在的目录加入Path环境变量。dll文件目录如下:

  • 32位系统 & VC2010,dll目录为:D:\OpenCV\build\x86\vc10\bin
  • 64位系统 & VC2010,dll目录为:D:\OpenCV\build\x64\vc10\bin

 

matlab2015bopencv2413配置vs2013win1064位-cppMake.m 本帖最后由 yz琳儿 于 2017-1-26 12:57 编辑 以下信息转自博文MATLAB与C 混合编程(依赖OPENCV),感谢作者zouxy09。在此基础上根据版本需求做了相应更改,亲测成功。下面均系个人看法,欢迎大家批评指正。 首先mex -setup,这个指令任何版本的配置都要有,目的是安装c 编译器,然后选择mex -setup C 即可。(第一次配置需要输入,以后不用) 接下来,网上一般会说mex -v,但是matlab2015b下,输入会报错                                                                          Verbose mode is on.                                                                          Error using mex。。                                                                          Not enough input arguments. 原因是在2014版本(貌似)之后matlab并没有mexopts.bat这个配置文件,取而代之的是mex_C _win64.xml文件,因此采用上述博文的配置方法。 具体为: 1.将。。(opencv的路径)\opencv\build\x64\vc12\bin 添加入环境变量path,之后需要重启机器。 (注意:vs2013对应的是vc12,如果是vs2015,需要将路径\vc12\bin修改为\vc14\bin) 2.打开matlab,更改附件中的cppMake.m       a.程序第14行 CPPFLAGS = ' -O -DNDEBUG -I.\ -IG:\software\opencv\build\include';  %%红色需要改为自己的路径       b.程序第15行 LDFLAGS = ' -LG:\software\opencv\build\x64\vc12\lib';  %%红色需要改为自己的路径 (当然,步骤1,2,如果是32为机器,x64相应改为x86。不过我没有测试) (注意:vs2013对应的是vc12,如果是vs2015,需要将路径\vc12\lib修改为\vc14\lib) 3.将附件中的 RGBtoGRAY.cpp 测试文件置于cppMake.m所在文件夹下,输入cppMake完成测试,会在文件夹下生成 RGBtoGRAY.mexw64。接着就可调用该函数,比如                                                                         img=RGBtoGRAY;                                                                         imshow); 4.之后大家可以任意编写.cpp文件(具体可参考网上的mexFunction编写),完成matlab的调用 错误集锦: 1.编译.cpp成功,然并没有生成.mexw64文件。(程序第14行,也就是include的路径,引号与-o之间是有空格符的) 2.报错                                                                         Error using mex                                                                         MEX cannot find library 'argeArrayDims-LG:\software\opencv\build\x64\vc12\lib' specified with the -l option. (同上,程序第15行,也就是lib的路径,引号与-L之间是有空格符的) 3.报错                                                                        Error using mex                                                                        MEX cannot find library 'opencv_highgui2413' specified with the -l option. (同上,程序第16行,也就是lib名称,引号与第一个-l之间是有空格符的,且相邻两个-l之间是有空格符的) 4.编译.cpp成功,生成.mexw64文件,但是调用函数时报错                                                                        invalid mex file...找不到指定模块 (确认配置方法的第一步,添加path之后,需要重启机器) 5.编译.cpp成功,生成.mexw64文件,但是调用函数时报错                                                                        can't open input file (程序第16行,也就是lib名称,名称结尾是2413,不是2413d)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值