最近需要读取视频,MATLAB居然不支持特定格式,徘徊在把代码改成python和配置MATLAB去调用opencv之间,最后选了后者。我也出现过失败,装了第二次。过程中一定要看仔细,如果遇到错误找找相同类型的帖子有没有说明。
条件:已经安装了MATLAB2018a,VS2017
MATLAB命令行中mex -setup可执行
下载Windows版本的cmake:
下载了opencv3.4.1:
https://github.com/opencv/opencv/archive/3.4.1.zip
下载了opencv_contrib3.4.1:
https://github.com/opencv/opencv_contrib/archive/3.4.1.zip
下载mexopencv3.4.1
https://github.com/kyamagu/mexopencv
OpenCV路径设置:
D:\SoftWare\OpenCV3.4.1_contib
D:\SoftWare\OpenCV3.4.1
然后开始通过生成一个VS解决方案去搭建上述环境资源。通过cmake-gui.exe,按照如下步骤:
1)设置源文件路径
2)设置目标文件路径
后来为了简洁美观,有点小调整,文件目录及路径为:
选定源文件路径和生成文件路径:
3)点击Configure,选择vs编译器,中间出了点小插曲,卸载了一下cmake,然后重装了一下,在tools里面选择编译器
- 在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组中设置如下:
with组中,撤销选定如下内容:
WITH_CUDA
,WITH_CUFFT
,WITH_CUBLAS
,WITH_NVCUVID
,WITH_MATLAB
,WITH_VTK
- 然后,重新点击configure,generate,关闭cmake
- ------------------------------------------------------------------------------------------------------------------------------------------------------------------
- 编译opencv:
- 1)打开VS2017,打开opencv.sln
- 2) 将vs2017的debug模式换成release
- 3)ALL_BUILD右键生成
- -----------------------------------------------------------------------------------------------------------------------------------------------------------------注意:需要一定的时间,另外,需要注意中间报错有一个const char* 无法转换为char*,当时忘记截图,所以我的选择是直接找到报错命令行,将char* 前面加上const即可正确生成。
- ------------------------------------------------------------------------------------------------------------------------------------------------------------------
- 4)INSTALL右键生成
- 5)关闭vs
添加环境变量
D:\SoftWare\dev\build\install\x64\vc15\bin
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
打开MATLAB
>> cd('D:\SoftWare\dev\mexopencv')
>> addpath('D:\SoftWare\dev\mexopencv')
>> addpath('D:\SoftWare\dev\mexopencv\opencv_contrib')
>> mexopencv.make('opencv_path','D:\SoftWare\dev\build\install','opencv_contrib',true)
如果报错:
错误使用 mex
MEX 参数 '-R2017b-largeArrayDims' 未知。
打开mexopencv中的make.m文件
找到如下内容:ctrl+r
% real/imaginary storage format for complex arrays
% if ~mexopencv.isOctave() && ~verLessThan('matlab', '9.4')