1、Windows 7 64位 SP1 旗舰版;
2、Qt 5.10.1:qt-opensource-windows-x86-5.10.1
3、CMake 3.11.1:cmake-3.11.1-win64-x64
4、OpenCV 3.4.1:opencv-3.4.1
1、下载Qt 5.10.1、CMake 3.11.1并安装,此处采用默认安装路径;
2、系统环境变量Path添加如下包含路径:
C:\Qt\Qt5.10.1\5.10.1\mingw53_32\bin;
C:\Qt\Qt5.10.1\5.10.1\mingw53_32\lib;
C:\Qt\Qt5.10.1\Tools\mingw530_32\bin
C:\Program Files\CMake\bin;
3、下载OpenCV 3.4.1文件,并解压,将解压后的文件放在D盘根目录(自定义即可),并修改文件夹名称(可不修改),见图1;
4、新建文件夹“OpenCV_3.4.1-Build”,用于存放编译生产的文件。
图1 文件夹设置
经过以上步骤,准备工作完成。
1、打开CMake(cmake-gui),设置源文件和生成后的二进制文件路径,如图2所示,其中, source 路径指向解压后的 “opencv-3.4.1”,build 路径可指向自己建的一个 “build” 文件夹;
图2 路径设置
2、设置好路径后,点击左下角的 Configure 按钮,弹出窗口,如下图3所示:
图3 编译器选择
3、选择Next进入下一步,分别设置C与C++编译器路径,如图4所示;
图4 编译器路径选择
4、点击 Finish 按钮,继续,此时主界面的 Configure 按钮变为 Stop,表示配置进行中,如图5所示;
图5 首次配置
5、CMake编译结束界面如下图,勾选生成列表中的WITH_OPENGL和WITH_QT两项,其他项最好不要改动,如图6所示(备注,请忽略图中的路径,因为编译多次才成功,每次路径设置可能不同);
图6 选项
6、再次点击Configure按钮,红色消失。如果 cmake 的主界面仍有红色区域,则再次点击 Configure 进行配置,直到红色区域完全消失。配置过程中可能需要联网下载dll文件,请保持网络正常连接互联网。此外配置过程中检测系统是否含有Python,建议安装Python后继续进行配置;
7、点击Generate按钮,生成makefile文件,成功后,底下会提示Generating done;
8、打开cmd,进入刚才设置的目标路径(D:\OpenCV_3.4.1-Build),输入mingw32-make命令开始编译。此过程较为漫长,建议关掉杀毒软件可能会快些,在我的ThinkPad E420上耗时约30分钟。
9、编译完成后,在cmd命令窗口中输入mingw32-make install安装,该步骤相对较快;
10、编译完成后,在D:\OpenCV_3.4.1-Build路径下即可找到生成的lib文件夹和bin文件夹,install文件夹下可以看到include文件夹,将这三个文件夹放在一起,即完成OpenCV库的编译。
备注:1)lib、bin、include文件夹可以作为系统路径在系统环境变量Path中设置,也可以使用相对路径,放置在项目文件夹下;
2)当前最新版OpenCV编译过程不会一帆风顺,编译过程中出现多次报故中止,中止进度分别为23%、43%、64%,请参考下面第四部分。
1、error: 'nullptr' was not declared in this scope
保存文件:报错文件io_win32.cc
出现原因:nullptr是C++11引入的新特性,解决C和C+,目前版本编译器不支持C++11。
解决方法:修改nullptr为NULL,然后重新输入ming32-make继续编译。
template
bool null_or_empty(const char_type* s) {
//TODO: nullptr error
return (s == NULL || *s == 0);
}
2、1)error: 'else' without a previous 'if';2)error:'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA' was not declared inthis scope
报错文件:cap_dshow.cpp
出现原因:缺少宏定义
解决方法:cap_dshow.cpp中添加如下宏定义:
#define STRSAFE_NO_DEPRECATE
图7 问题2界面
3、error:'time' was not declared in this scope
报错文件:opencv-3.4.1\modules\photo\test\test_hdr.cpp
出现原因:缺少文件包含
解决方法:test_hdr.cpp前面增加文件包含如图10所示。
#include
#include
图8 问题3界面
图9 报错文件内容
图10 添加头文件
4、dnn: build failure on gcc, invalid-pch
图11
测试请参考本人微博《【Qt_OpenCV基础篇 - 001】Qt 5.10.1下配置OpenCV开发环境及Demo》。
水平有限,欢迎批评指正!