“工欲善其事,必先利其器”,下面简单介绍在 Win7 的 32位系统下,使用 cmake 编译最新 OpenCV 版本的过程。
在编译或配置过程中,有遇到问题的,可以在下面留言,集思广益一起讨论,希望能将常见的问题归纳整理,找出对应的解决方法。
1 系统和软件
1.1 系统
Windows 7 家庭普通版,Service Pack 1, 32 位操作系统
注:因为安装 VS 2015 时,要求操作系统必须是 Win7 Service Pack 1 以上
1.2 开发工具
Visual Studio 2015,社区版
1.3 cmake
cmake-3.6.1-win32-x86,下载 cmake-3.6.1-win32-x86.zip 压缩包 (20.4M),解压后找到 bin 目录下,点击 cmake-gui 便可运行。
注:根据操作系统的不同,选择相应的版本,cmake 下载页 https://cmake.org/download/
1.4 OpenCV
首先,下载 GitHub 中最新的 OpenCV 源码,点击右侧 “Clone or download”,选择 “Download ZIP” 下载 opencv-master 压缩包 (大小76.4M)
GitHub 链接 https://github.com/opencv/opencv
其次,按照类似的步骤,在 GitHub 中下载 opencv_contrib-master.zip 压缩包,大小为 53.1 M
GitHub 链接 https://github.com/opencv/opencv_contrib
最后,将两个 zip 包解压缩,等待编译。
注: 直接使用 GitHub 下的源码,可以减少一些错误的发生
2 cmake 编译
需要注意的是,cmake 在编译过程中,会自动下载一些文件,因此需要保持网络畅通。
2.1 cmake-gui
在解压后的 cmake 目录中,找到 bin 下的 cmake-gui,点击运行程序,如下所示
其中, source 路径指向解压后的 “opencv-master”,build 路径可指向自己建的一个 “build” 文件夹
注: 此处误将 source 路径指向了 "opencv-master/modules",导致 Configure 时出现如下错误
查看具体的细节,如下所示, 未知的 cmake 命令 "ocv_glob_modules"
2.2 Configure
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
找到 Name 下的 OPENCV_EXTRA_MODULES_PATH,为其设置 opencv_contrib-master 的路径 ,精确到 /modules 目录
再次点击 Configure 进行配置,可能需要 Configure 两三次之后,红色区域才能完全消失。
2.3 generate
点击 Generate,出现 “Generating done” 则意味着 cmake 的工作结束了。
3 Visual Studio
3.1 INSTALL 生成
进入到刚配置生成好的 build 目录下,找到 OpenCV.sln 工程文件,使用 VS2015 打开。
找到 INSTALL,分别在 Debug 和 Release 模式下,右键 -> 生成
将 install 目录下生成的所有文件,拷贝到需要进行 OpenCV 配置的文件中
3.2 OpenCV 配置
1) 环境变量
计算机 -> 属性 -> 高级系统设置 -> 环境变量,编辑系统变量里的 path 变量,为其添加变量值 D:\opencv\build\x86\vc14\bin\
2) 头文件和库文件
头文件: D:\opencv\build\include
库文件: D:\opencv\build\x86\vc14\lib
3) 依赖项
附加依赖项,带 "...d.lib" 对应 Debug 模式,不带 "...d.lib" 的对应 Release 模式。cmake 编译的,没有官方 opencv_world310d.lib 这种万能的文件。
一般可以根据程序的需要,添加相应的依赖项。例如,进行人脸识别时,需要用到 face 模块,便可在直接在依赖项中,添加 opencv_face310d.lib
配置完成,尽情享受 OpenCV 的世界吧 ^_^
参考资料:
vs12 vs2013 下opencv3.0配置扩展模块 Icoding_F2014