本人原本并不精通Matlab,也初次接触这一图像处理板块,现因工作需要,在给matlab安装opencv库时,遇到了许多问题,经过不懈努力,终于解决了,哭死。起初不知道问题在哪烦了好几天,现在解决了赶紧分享一下喜悦,我用的版本分别是:matlab2021b;opencv3.4.1;mexopencv-3.4.1;(版本不对应,本人两行泪)
接下来介绍安装步骤:
首先安装opencv板块,先不急着下载最新版本的opencv文件,而是先在matlab上安装C++的编译器,代码如下:
mex -setup
如果你电脑上并没有C++的编译器,那么有代码提示:
要么你自己点链接安装matlab自带的MinGW-w64 C/C++编译器,要么你自己下载一个别的;
这个链接相当于 在matlab的主页-选项框的附加功能那里选择【获取附加功能】手动获取MinGW-w64 C/C++编译器
但是,matlab下载附件太特么慢了,好不容易自己去官网下载了MinGW-w64 C/C++编译器,遇到了问题,百度都找不到结果,无奈,卸载之~
故而,选择了VC2017++的社区版(官网下载,我放心,社区版,不要钱),(其实我一开始下载了2019版本,但是后续的步骤中没有找到配套的东西,导致频频出错,emmm版本高,并不意味着一定就是适合)
注意:安装东西尽量不要放在C盘,我刚开始放在C盘后,安装库时也出了问题,后来察觉到可能是C盘自带管理员权限,换到E盘后,问题立刻就解除了。
安装好VC2017++,在电脑的环境变量里,在PATH添加opencv的安装地址;再次在命令行输入mex -setup代码,就会出现以下提示:
这里点击了:mex -setup C++
此刻,需要安装mexopencv,3.4.1版本在github上的下载链接是Release OpenCV 3.4.1 · kyamagu/mexopencv · GitHub
下载好了之后,把它解压,放在Matlab的安装文件中
在命令行输入:
mexopencv.make
得到提示:无法解析名称 mexopencv.make。我一看,嗷!原来是没把mexopencv文件夹添加到路径。添加之
再次输入mexopencv.make
提示:
我一看,嗷!原来是原来下载的opencv库并没有vc15这个文件(一开始我下载的是opencv3.3.0版本),遂重新下载opencv3.4.1版本,并将opencv的路径添加到环境变量的PATH中,例如我的是D:\opencv\build\x64\vc15\bin。
再次运行mexopencv.make,提示错误-R2017b,我一搜,嗷!原来需要将mexopencv3_4_1\+mexopencv
目录下的make.m
文件中的opts.opencv_path
参数设置为OpenCv原先解压的路径,例如我这里是'D:\opencv\build
打开make.m文件后,搜索-R2017b,找到这几行代码,把他们注释掉
% real/imaginary storage format for complex arrays
if ~mexopencv.isOctave() && ~verLessThan('matlab', '9.4')
% keep using the "separate complex storage", as opposed to the
% "interleaved complex storage" introduced in R2018a
% (see MX_HAS_INTERLEAVED_COMPLEX)
mex_flags = ['-R2017b' mex_flags];
end
结果如下:
% % real/imaginary storage format for complex arrays
% if ~mexopencv.isOctave() && ~verLessThan('matlab', '9.4')
% % keep using the "separate complex storage", as opposed to the
% % "interleaved complex storage" introduced in R2018a
% % (see MX_HAS_INTERLEAVED_COMPLEX)
% mex_flags = ['-R2017b' mex_flags];
% end
命令行,再次输入mexopencv.make,提示如下:
如果版本下载错了,它就会提示,什么找不到路径,或者编译什么错误等等,只因尝过opencv和mexopencv不同版本的痛
完成收工!