参考链接:
mexopencv官方文档:介绍了全部流程
补充官方文档Configure OpenCV出现的问题:直到Configure后没有红色,再点击Generate
最新Opencv 与 VC++ 的版本对应关系(2023-04-08)
MATLAB支持和兼容的编译器 - Windows
- 文章起源:需要在matlab中调用opencv库,搞了一天半
- 需要下载的东西:(截止2023.6.13,最新的mexopencv 仅与 OpenCV 3.4.1 兼容)
opencv-3.4.1和opencv_contrib-3.4.1, 后面提供了下载链接- CMake(3.26.4)
- Visual Studio Community(我用的是2022),!!!需要安装
使用C++的桌面开发,Windows 10 SDK以及VS2015 C++生成工具 - mexopencv-3.4.1
下面是完整流程,基本是官网文档的翻译,补充了一些自己踩过的坑
OpenCV部分
1.下载OpenCV
直接从 GitHub 下载源码压缩包:
opencv sources (tag 3.4.1): https://github.com/opencv/opencv/archive/3.4.1.zip
opencv_contrib sources (tag 3.4.1): https://github.com/opencv/opencv_contrib/archive/3.4.1.zip
解压到同一个文件夹dev下面,例如:
C:\dev\opencv-3.4.1C:\dev\opencv_contrib-3.4.1
2. 配置OpenCV
- 此步骤需要CMake和 C++ 编译器(Visual Studio Community 2022)
2.1 生成 VS 解决方案来构建opencv源代码
安装CMake之后,启动cmake-gui.exe
-
设置源文件夹和目标文件夹,分别为
C:/dev/opencv和C:/dev/build

-
按Configure,然后选择
Visual Studio 14 2015和Win64作为编译器 -
勾选
Grouped和Advanced,在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_3.4.1/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

3 编译OpenCV
在 Visual Studio 中打开上一步生成的解决方案:C:\dev\build\OpenCV.sln,并执行以下操作:
-
将配置切换到“Release”模式

-
构建解决方案,右键“ALL_BUILD”,点击
生成,生成成功进行下一步 -
右键“INSTALL”,点击
生成(我这里编译报错,后来在Visual Studio Installer里面安装使用C++的桌面开发,Windows SDK和VS2015 C++生成工具之后就可以编译成功了,如下图所示

-
关闭 Visual Studio
-
最后,将 OpenCV 二进制文件(包含 OpenCV DLL 的文件夹:
C:\dev\build\install\x64\vc14\bin)添加到PATH环境变量中。
mexopencv部分
-
下载mexopencv项目,保存到文件夹
C:\dev\mexopencv -
启动 MATLAB,在命令行输入
mex -setup cpp(!!!不是官方文档的mex -setup),然后选中Microsoft Visual C++ 2015(默认的2022版本无法使用),参考matlab官方文档

-
然后输入以下命令:
cd('C:\dev\mexopencv') addpath('C:\dev\mexopencv') addpath('C:\dev\mexopencv\opencv_contrib') mexopencv.make('opencv_path','C:\dev\build\install', 'opencv_contrib',true)一切顺利的话,就编译成功

如果编译失败,可尝试这篇文章:将mexopencv3_4_1\+mexopencv目录下的make.m文件中的opts.opencv_path参数设置为OpenCV构建的路径,如C:\dev\build -
在命令行输入
cv.getBuildInformation(),然后输出相应信息 ,就可以愉快地在 MATLAB 中使用 OpenCV啦~


















