参考链接:
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.1
C:\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啦~