前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在MATLAB中使用opencv

在MATLAB中使用opencv

作者头像
万木逢春
发布2019-10-09 16:11:44
5.9K0
发布2019-10-09 16:11:44
举报
文章被收录于专栏:帮你学MatLab帮你学MatLab

在MATLAB中使用OpenCV大体上分两个方法:

  1. 比较熟悉C++: 使用Mex通过编译器编译所需要的所有C++功能都实现了的函数;
  2. 比较习惯MATLAB: 使用mexopencv直接把opencv整个库编译, 这样就可以在MATLAB中直接使用OpenCV函数.

我们来说说第二类,需要做的事情是先编译opencv的源码、再编译matlab可用的mex文件夹,这两步的编译器必须是同一个,而最近几年的新版本matlab都推荐使用MinGW-w64编译器来使用mex、可是mexopencv提供的编译辅助函数在Windows系统上默认使用Visual Studio或者Windows SDK来编译,如果觉得自己需要Visual Studio的其他功能,安装一下也是挺好的

下载安装vs2017后在matlab命令行输入mex -setup C++选择vs2017作为mex编译器

要是在Linux系统下matlab会自动选用gcc编译器、但是2017b之后的需要gcc6.3、这个版本在常见Linux发行版系统中是需要自行编译的(也可以注意观察https://pkgs.org/ 网站上有没有提供6.3版本的已经编译好的安装包)

经过各种尝试、发现使用Ubuntu16的LTS版本系统可以安装已经编译好的gcc4.9版本,我们使用虚拟机安装Ubuntu16

在 https://pkgs.org/download/gcc 下载gcc以及g++4.9的可以双击安装的deb包就可以安装(安装包在文末下载链接中)、安装之后运行下面几句命令行、将系统的编译器选择为4.9版本

删除原先的软链接

sudo rm /usr/bin/gcc

sudo rm /usr/bin/gcc-ar

sudo rm /usr/bin/gcc-nm

sudo rm /usr/bin/gcc-ranlib

sudo rm /usr/bin/g++

设置新的软链接

sudo ln -s /usr/bin/gcc-4.9 /usr/bin/gcc

sudo ln -s /usr/bin/gcc-ar-4.9 /usr/bin/gcc-ar

sudo ln -s /usr/bin/gcc-nm-4.9 /usr/bin/gcc-nm

sudo ln -s /usr/bin/gcc-ranlib-4.9 /usr/bin/gcc-ranlib

sudo ln -s /usr/bin/g++-4.9 /usr/bin/g++

接下来就是要编译opencv,mexopencv的wiki内写的是Windows系统需要这样做、通过实践发现在Linux系统下也是可以这么做的

在 https://cmake.org/ 官网下载cmake来准备编译opencv所需要的一切

下载opencv源码3.4.1

https://github.com/opencv/opencv/archive/3.4.1.zip

下载opencv_contrib源码3.4.1

https://github.com/opencv/opencv_contrib/archive/3.4.1.zip

解压这两个zip文件,双击打开刚刚安装的cmake

选择opencv源码比如 C:/dev/opencv

设置编译路径比如 C:/dev/build

点击Configure选择Visual Studio 2017作为编译器(如果是Ubuntu系统中就选择系统中的gcc编译器)

以下操作两个系统都一样、mac都一样

勾选分组一起显示的复选框、在"BUILD"组里面去掉以下几项(*号表示匹配任意字符):

BUILD_DOCS, BUILD_EXAMPLES, BUILD_PACKAGE, BUILD_PERF_TESTS, BUILD_TESTS, BUILD_JAVA

BUILD_opencv_apps, BUILD_opencv_cuda*, BUILD_opencv_cudev, BUILD_opencv_js, BUILD_opencv_java*, BUILD_opencv_python*, BUILD_opencv_ts, BUILD_opencv_viz, BUILD_opencv_world

在 "OPENCV"分组里面:

设置OPENCV_EXTRA_MODULES_PATH比如为C:/dev/opencv_contrib/modules

勾选OPENCV_ENABLE_NONFREE

在 "WITH" 分组, 去掉以下几项:

WITH_CUDA, WITH_CUFFT, WITH_CUBLAS, WITH_NVCUVID, WITH_MATLAB, WITH_VTK

再次点击Configure

等待一会儿"BUILD" 分组应该还是红色如果有以下几项被勾选的就去掉:

BUILD_opencv_cvv, BUILD_opencv_freetype, BUILD_opencv_hdf, BUILD_opencv_matlab, BUILD_opencv_ovis, BUILD_opencv_sfm

再次点击 Configure直到没有红色

点击Generate

关闭 CMake

接下来如果在Windows系统就按照https://github.com/kyamagu/mexopencv/wiki/Installation-%28Windows%2C-MATLAB%2C-OpenCV-3%29

采用vs2017编译opencv、再进入matlab中编译mex文件

我们这里采用Linux环境来开发,进入刚刚选择的编译路径,打开命令行

make -j8

或者

make -j4

后面的数字表示运行的线程、更大的就更快

然后再

sudo make install

稍等一会儿就好

然后进入mexopencv文件夹

sudo make all contrib MATLABDIR=/usr/local/MATLAB/R2017b

后面的路径要换成对应的

接下来打开matlab将mexopencv文件夹下的

C:\path\to\mexopencv C:\path\to\mexopencv\opencv_contrib

添加到matlab搜索路径就可以使用了

推荐这样使用

out = cv.filter2D(img, kern);

运行一个demo就像下面这样

相关文件下载链接:

https://pan.baidu.com/s/1aL5-AyzHO4jBGhkaQdh6Mg

提取码:x4mq

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 帮你学MatLab 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档