OpenCV 4.0 版本,历时3年半,终于在2018年圣诞节前发布了,该版本增加的新功能如下:
1) 更新代码支持 c++11 特性,需要兼容 c++11 语法的编译器
2)增加 dnn 中的模块功能,新加了 Vulkan API 程序接口
3)集成了完整的 QR 码识别功能
4) 新加的 opencv_gapi 模块
5) 整体速度的提升
6) 增加流行的 Kinect 融合算法
7) DIS 稠密光流检测算法从 opencv_contrib 模块移到 opencv video 模块
本文以 Win10 64 位 为例,简述 cmake 编译 OpenCV 过程 (如果是 32 位系统,则对应 32位 的 cmake 和 Qt 软件)
1 下载准备
1.1 Win10
Windows 10 专业版,64 位
注:安装 VS 2015 时,要求操作系统 Win7 Service Pack 1 以上
1.2 VS or Qt
选择一: Visual Studio 2015,专业版,下载链接 https://www.visualstudio.com/downloads/
选择二: VS2015 + Qt 5.12.2,对应 qt-opensource-windows-x86-5.12.2.exe,下载地址 http://download.qt.io/archive/qt/
注:虽然 Qt 是开源的,但是在下载时,需要自行注册账号,并且遵守一些开源的协议
1.3 cmake
下载 cmake-3.13.0-win64-x64.zip 压缩包,到 /bin 目录下,点击 cmake-gui 运行。
注:根据操作系统的不同,选择相应的版本,cmake 下载页 https://cmake.org/download/
1.4 OpenCV
首先,选择 “Source code”,下载 GitHub 中的 OpenCV 源码
GitHub 链接 https://github.com/opencv/opencv/releases
其次,按照类似的步骤,在 GitHub 中下载 opencv_contrib 的源码压缩包
GitHub 链接 https://github.com/opencv/opencv_contrib/releases
最后,将两个 zip 包解压缩,等待编译。
2 cmake 编译
注意: cmake 在编译过程中,会自动下载一些文件,例如 opencv_ffmpeg.dll 等,因此需要保持网络畅通。
2.1 运行
在解压后的 cmake 目录中,找到 /bin 下的 cmake-gui.exe,点击运行,如下所示
其中, source 路径指向解压后的 “opencv-4.0”,build 路径可指向自己建的一个 “build” 文件夹
注: 此处误将 source 路径指向了 "opencv-4.0/modules",导致 Configure 时出现如下错误
2.2 配置
2.2.1 opencv-maste
设置好路径后,点击左下角的 Configure 按钮,弹出窗口,如下所示
点击 Finish 按钮,继续,此时主界面的 Configure 按钮变为 Stop,表示配置进行中
注意:如遇到问题,先检查错误信息;然后,点击 File -> Delete Cache,退出 cmake-gui,并将 build 文件夹内的内容清空,再重复步骤 2.1 和 2.2,
等 Configure 依次结束后,如果 cmake 的主界面仍有红色区域,则再次点击 Configure
下图是 Configure 完成后的界面,红色消失,只剩白色的区域
2.2.2 opencv_contrib-master
OPENCV_EXTRA_MODULES_PATH,为其设置 opencv_contrib-4.0.0 的路径 ,精确到 /modules
点击 Configure
点击 Generate,出现 “Generating done” 则意味着 cmake 的工作结束了。
2.3 VS 生成
2.3.1 Python 问题
因为电脑中装了 Python 3.6.4,结果在下面步骤的 Debug 模式下,生成时出现了如下错误:
这是因为安装 python 时,并不会安装 debug 版本,于是,回到 python 安装界面,选择 debug 版本
2.3.2 生成库
进入到生成的 build 目录下,找到 OpenCV.sln,使用 VS 2015 打开。
找到 INSTALL,分别在 Debug 和 Release 模式下,根据系统选择 x86 或 x64,右键 -> 生成
将 install 目录下生成的所有文件,拷贝到需要进行 OpenCV 配置的文件中 ( 32 位操作系统,则会生成 x86 文件夹)
3 VS 下的配置
1) 环境变量
计算机 -> 属性 -> 高级系统设置 -> 环境变量,编辑系统变量里的 path 变量,为其添加变量值 D:\opencv\build\x64\vc14\bin
2) 头文件和库文件
头文件: D:\opencv\build\include
库文件: D:\opencv\build\x64\vc14\lib
3) 依赖项
生成的 lib 库,格式为 “opencv_modulename_version_d.lib”,带 "_d" 的对应 Debug 模式,不带的对应 Release 模式。
可根据程序的需要,添加相应的静态库。 例如,人脸识别时,用到 face 模块,可在依赖项中,添加 opencv_face400d.lib
4 Qt 下的配置
1) 环境变量
D:\opencv\build\x64\vc14\bin;
D:\Qt\Qt5.9.6\5.9.6\msvc2015\bin;
2) 头文件和库文件
以简单的读图程序为例,需要在新建的 Qt 工程配置文件中,添加如下代码:
LIBS += -L$$PWD/../../opencv/build/x64/vc14/lib/ -lopencv_highgui400d \
-lopencv_core400d \
-lopencv_imgproc400d \
-lopencv_imgcodecs400d
INCLUDEPATH += $$PWD/../../opencv/build/include
可根据具体的需要,适当添加新的库文件,比如,用于人脸识别的 opencv_face400d,深度神经网络 opencv_dnn400d 等等。
配置完成,尽情享受 OpenCV 的世界吧 ^_^
参考资料
vs12 vs2013 下opencv3.0配置扩展模块 Icoding_F2014
更新记录
2017年05月09日: 升级为 Win 64 位系统,CMake 3.8.1,OpenCV 3.2,Qt 5.8,结果在 “2.3 2) INSTALL 生成” 处卡了,生成不成功。
2017年10月12日: 升级为 Win10 64 位系统,CMake 3.10.0,OpenCV 3.3,Qt 5.9.1,生成并配置成功。
CMake 3.10.0,生成并配置成功。
CMake 3.10.3,生成并配置成功。
CMake 3.13.0,新加的 opencv_gapi 模块出现编译错误,生成不成功,其它模块生成并配置成功。
2019年4月11日:升级为 OpenCV 4.1.0,Qt 5.12.2,CMake3.14.1,opencv_gapi 模块出现编译错误,生成不成功,其它模块生成并配置成功。