【Qt_OpenCV基础篇 - 000】Qt5.10.1 + MingW5.3.0 + Win7_64 + CMake3.11.1环境下编译OpenCV 3.4.1

一、开发环境

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 <typename char_type>
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 <ctime>
#include <cstdlib>

图8 问题3界面

图9 报错文件内容

图10 添加头文件

4、dnn: build failure on gcc, invalid-pch

图11 

五、测试

测试请参考本人微博《【Qt_OpenCV基础篇 - 001】Qt 5.10.1下配置OpenCV开发环境及Demo》。

水平有限,欢迎批评指正!

 

  • 9
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值