本文结构

  • 第一部分 只安装Qt Creator和配置OpenCV
    • 1.Qt Creator5.12.2下载与安装
    • 2.Cmake下载与安装
    • 3.OpenCV下载
    • 4.编译OpenCV
    • 5.测试Qt程序
  • 第二部分 配置opencv_contrib扩展库
    • 6.添加opencv_contrib扩展库
    • 7.测试使用opencv扩展库的Qt程序
    • 8.本文使用的软件百度网盘下载

最终结果展示

笔者使用的版本如下
友情提示:这里Opencv 和opencv_contrib版本需要一致,笔者踩过坑。

Win10 家庭版 64位
Qt Creator 5.12.2
Cmake 3.18.0
Opencv 4.3.0
opencv_contrib 4.3.0

第一部分 只安装Qt Creator和配置OpenCV

1.Qt Creator5.12.2下载与安装

以win10家庭版为例进行下载和安装
官方下载地址http://download.qt.io/archive/qt/5.12/5.12.2/下面有百度网盘安装包,请往下看
选择window版本

安装包有点大3.7G,下载很慢,最终报错,跳转到迅雷下载成功
这里给出笔者百度网盘安装包window版本Qt 5.12.2

双击安装包

这里需要注册qt账户

注册成功后登录

自定义安装路径,要求路径不能含有空格

选择组件

同意协议许可

点击下一步

下一步进行安装

安装完成显示如下

默认是打开Qt界面

2.Cmake下载与安装

官网下载地址https://cmake.org/download/,目前最新的版本是Cmake3.18.0


安装

笔者选择了如下配置:配置全局变量和创建桌面快捷方式

更改安装路径

安装完成

3.OpenCV下载

官方下载地址:https://opencv.org/releases/
目前最新版本是4.3.0
这里选择windows

下载完压缩包名:opencv-4.3.0-vc14_vc15.exe
解压完文件名:opencv

下面是将mingw加入环境变量

系统变量下找到PATH,点击编辑,添加如下

D:\Qt5.12.2\Tools\mingw730_64\bin

这是下载Qt时候的路径,需要自己找到

根据知乎:PATH和path是一样的,原因是:Windows系统对大小写不敏感。

4.编译OpenCV

根据安装路径,找到Cmake,点击cmake.gui.exe

where is the source code
添加opencv的sources

D:/opencv/sources

新建文件夹opencv-build

where to build the binaries

D:/opencv/opencv-build


保持默认MinGW Makefiles,点击Specify native compilers,再next

编译器选择:这里自己的安装路径
C语言

D:/Qt5.12.2/Tools/mingw730_64/bin/gcc.exe

C++

D:/Qt5.12.2/Tools/mingw730_64/bin/g++.exe

Fortran不用填

需要下拉,选中下面这两个WITH_OPENGL和WITH_QT

出现错误

错误信息

CMake Error at cmake/OpenCVFindLibsGUI.cmake:18 (find_package):Could not find a package configuration file provided by "Qt5" with any ofthe following names:Qt5Config.cmakeqt5-config.cmakeAdd the installation prefix of "Qt5" to CMAKE_PREFIX_PATH or set "Qt5_DIR"to a directory containing one of the above files.  If "Qt5" provides aseparate development package or SDK, be sure it has been installed.
Call Stack (most recent call first):CMakeLists.txt:685 (include)Configuring incomplete, errors occurred!

解决办法
在Opencv文件夹sources底下,也就是上面配置source code 的地址:D:/opencv/sources
在CMakeLists.txt文件下添加,位置如图所示

set (CMAKE_PREFIX_PATH "D:\\Qt5.12.2\\5.12.2\\mingw73_64\\")

这里是cmake配置opencv时候的编译器选项位置


完成之后来到下面的界面

然后再次点击configure,然后显示configuring done

此时,可以选择关闭Cmake,打开
where to build the binaries

D:/opencv/opencv-build

可以看到如下生成的文件

鼠标放在该文件夹内,按住Shift键右击鼠标,选择在此处打开Powershell窗口

在Powershell中输入

mingw32-make -j 8

据参考博客的博主所言:这里的-j 8是为了让CPU进行多任务处理,可以加快编译速度

进行到40%发生错误(这是没有添加opencv-contrib扩展库时候的报错)

gcc: error: long: No such file or directory
D:\Qt5.12.2\Tools\mingw730_64\bin\windres.exe: preprocessing failed.
mingw32-make[2]: *** [modules\core\CMakeFiles\opencv_core.dir\build.make:1495: modules/core/CMakeFiles/opencv_core.dir/vs_version.rc.obj] Error 1
mingw32-make[2]: *** Waiting for unfinished jobs....
mingw32-make[1]: *** [CMakeFiles\Makefile2:1889: modules/core/CMakeFiles/opencv_core.dir/all] Error 2
mingw32-make: *** [Makefile:182: all] Error 2
PS D:\opencv\opencv-build>

解决办法
在stackoverflow上面看到同样的问题https://stackoverflow.com/questions/61707195/error-building-opencv-with-mingw-qt-windows

打开我们新建的opencv-build文件下该路径

D:\opencv\opencv-build\modules\core\CMakeFiles\opencv_core.dir


打开flags.make,然后把RC-DEFINES(下面划线部分)替换掉

替换代码(注:cmake每configure和generate之后都需要更改这个文件)

RC_DEFINES = -DCVAPI_EXPORTS -D_USE_MATH_DEFINES -D_WIN32_WINNT=0x0601 -D__OPENCV_BUILD=1 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS

最终编译完成

100%之后输入

mingw32-make install

完成之后退出

现在需要将以下路径添加环境变量

D:\opencv\opencv-build\install\x64\mingw\bin

5.测试Qt程序

新建project

选择默认的项目Application-Qt Widgets Application

项目命名和位置:注意这里不能有中文路径,下面是错误的示范,后面笔者又新建项目,重新改成英文的路径,否则会报错

默认下一步

继续下一步

点击完成

在test.pro文件该位置添加如下代码

注意不要写成这种形式:

//这是错误的代码
INCLUDEPATH += D:\opencv\opencv-build\install\include
LIBS += D:\opencv\opencv-build\lib\

正确的代码

INCLUDEPATH += D:\opencv\opencv-build\install\include
LIBS += D:\opencv\opencv-build\lib\libopencv_*.a


在mainwindow.cpp文件下添加相应的包,添加代码如下

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/xfeatures2d.hpp>
using namespace cv;
 Mat image=imread("D:\\m1521\\Pictures\\Saved Pictures\\cute-2528119.jpg",1);namedWindow( "Display window", WINDOW_AUTOSIZE );imshow("Display window", image );

点击左下角的锤子,进行构建

会显示正确的信息如下

01:55:07: 为项目test执行步骤 ...
01:55:07: 配置没有改变, 跳过 qmake 步骤。
01:55:07: 正在启动 "D:\Qt5.12.2\Tools\mingw730_64\bin\mingw32-make.exe" -j8D:/Qt5.12.2/Tools/mingw730_64/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory 'D:/m1521/Documents/Qt_opencv/test/build-test-Desktop_Qt_5_12_2_MinGW_64_bit-Debug'
mingw32-make[1]: Nothing to be done for 'first'.
mingw32-make[1]: Leaving directory 'D:/m1521/Documents/Qt_opencv/test/build-test-Desktop_Qt_5_12_2_MinGW_64_bit-Debug'
01:55:08: 进程"D:\Qt5.12.2\Tools\mingw730_64\bin\mingw32-make.exe"正常退出。
01:55:08: Elapsed time: 00:01.

点击绿色的箭头运行

测试结果
显示出图片

至此,Qt5配置OpenCV安装配置完成!

第二部分 配置opencv_contrib扩展库

该部分在第一部分的基础上,配置opencv_contrib,本文结构这样安排的目的在于:第一,笔者先是安装了qt和opencv,当时没想到要使用opencv_contrib扩展库,也就是说这是笔者真实的安装过程;第二,基于对读者的换位思考。经过上面第一部分的配置工作,读者可能初步产生配置成功的喜悦,以更好的状态进入到扩展库的部分。

6.添加opencv_contrib扩展库

1.下载opencv扩展库,下载地址opencv_contrib全部版本下载地址

选择版本4.3.0
解压完:

2.编译的事前准备
打开路径:在D:\opencv\sources\cmake下面找到OpenCVCompilerOptions.cmake文件,打开它并找到add_extra_compiler_option(-Werror=non-virtual-dtor),
将其注释掉,如:
#add_extra_compiler_option(-Werror=non-virtual-dtor)
(这一步,笔者不知道是干嘛所用)
这一步参考该篇博文:qt5(mingw版) opencv3.0(含contrib扩展)配置详解

由于是后面补充的contrib扩展库,打开Cmake,在第一部分配置成功后选中下面这个NONFREE

再搜索path,找到OPENCV-EXTRA-MODULES_PATH,配置value,找到解压后的扩展库,路径到modules文件,这里配置value

下面便可以点击generate,显示generating done
每次generate之后都要经过第4步修改flags.make 文件,请参考第4步
(如果电脑没有安装cuda,请去掉勾选BUILD_CUDA_STUBS,否则会找不到cuda从而报错)

然后generate(下面这是错误的图,因为未去掉BUILD_CUDA_STUBS)

然后开始重复上面没有配置opencv_contrib的步骤4:编译OpenCV
在Powershell中输入

mingw32-make -j 8

在26%遇到问题

[ 26%] Building CXX object modules/ml/CMakeFiles/opencv_ml.dir/src/em.cpp.obj
[ 26%] Building CXX object modules/imgproc/CMakeFiles/opencv_imgproc.dir/src/approx.cpp.obj
[ 26%] Building CXX object modules/ml/CMakeFiles/opencv_ml.dir/src/gbt.cpp.obj
[ 26%] Building CXX object modules/imgproc/CMakeFiles/opencv_imgproc.dir/src/bilateral_filter.dispatch.cpp.obj
[ 26%] Building CXX object modules/cudaarithm/CMakeFiles/opencv_cudaarithm.dir/src/lut.cpp.obj
In file included from D:\opencv_contrib-4.3.0\opencv_contrib-4.3.0\modules\cudaarithm\src\lut.cpp:7:0:
D:\opencv_contrib-4.3.0\opencv_contrib-4.3.0\modules\cudaarithm\src\lut.hpp:10:10: fatal error: cuda_runtime.h: No such file or directory#include <cuda_runtime.h>^~~~~~~~~~~~~~~~
compilation terminated.
mingw32-make[2]: *** [modules\cudaarithm\CMakeFiles\opencv_cudaarithm.dir\build.make:125: modules/cudaarithm/CMakeFiles/opencv_cudaarithm.dir/src/lut.cpp.obj] Error 1
mingw32-make[1]: *** [CMakeFiles\Makefile2:4335: modules/cudaarithm/CMakeFiles/opencv_cudaarithm.dir/all] Error 2
mingw32-make[1]: *** Waiting for unfinished jobs...

这个问题的解决需要去掉勾选BUILD_CUDA_STUBS

后面遇到错误

error: 'GL_RENDERBUFFER_EXT' was not declared in this scopeglBindRenderbufferEXT(GL_RENDERBUFFER_EXT, fbo_depth);

解决办法:如果出现dynafu.cpp的错误,BUILD_opencv_rgbd与WITH_OPENGL只能勾选其一
去掉勾选BUILD_opencv_rgbd

还发现这样的错误


[ 56%] [ 56%] Scanning dependencies of target opencv_aruco
Building CXX object modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/boostdesc.cpp.objBuilding CXX object modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/brief.cpp.obj[ 56%] Building CXX object modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/daisy.cpp.obj
[ 56%] [ 56%] Building CXX object modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/ellipticKeyPoint.cpp.objBuilding CXX object modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/fast.cpp.obj[ 58%] Built target opencv_bioinspired
[ 58%] Built target opencv_ximgproc
Scanning dependencies of target opencv_ccalib
Scanning dependencies of target opencv_dnn_objdetect
D:\opencv_contrib-3.4\opencv_contrib-3.4\modules\xfeatures2d\src\boostdesc.cpp:654:20: fatal error: boostdesc_bgm.i: No such file or directory#include "boostdesc_bgm.i"^~~~~~~~~~~~~~~~~
compilation terminated.
mingw32-make[2]: *** [modules\xfeatures2d\CMakeFiles\opencv_xfeatures2d.dir\build.make:102: modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/boostdesc.cpp.obj] Error 1
mingw32-make[2]: *** Waiting for unfinished jobs....

按照这个教程下载zip包,解压之后

安装OpenCV时提示缺少boostdesc_bgm.i文件的问题解决方案(附带百度云资源)

在这个路径内复制

D:\opencv_contrib-4.3.0\opencv_contrib-4.3.0\modules\xfeatures2d\src

结果跑到88%还是有错误

 fatal error: features2d/test/test_detectors_regression.impl.hpp: No such file or directory#include "features2d/test/test_detectors_regression.impl.hpp"

此处bug参考:树莓派4的opencv4.1.0–python3.7的开发环境安装
我们回到opencv4.3.0文件夹下复制下面两个文件到报错的路径下

复制到如下路径(总共需要复制5个hpp文件

D:\opencv_contrib-4.3.0\opencv_contrib-4.3.0\modules\xfeatures2d\test

修改test_features2d.cpp文件(具体修改哪个文件,需要查看报错的位置,哪个文件引用)
修改之前

#include "features2d/test/test_detectors_regression.impl.hpp"
#include "features2d/test/test_descriptors_regression.impl.hpp"

修改之后

#include "test_detectors_regression.impl.hpp"
#include "test_descriptors_regression.impl.hpp"

发现成功一处,还有一处错误

打开test_rotation_and_scale_invariance.cpp文件
修改前

修改后

#include "test_detectors_invariance.impl.hpp" // main OpenCV repo
#include "test_descriptors_invariance.impl.hpp" // main OpenCV repo


还有错误

同样的步骤,把相应的文件复制过来,结果100%成功

100%之后输入

mingw32-make install

完成之后退出

7.测试使用opencv扩展库的Qt程序

请参考第5步:测试Qt程序
这里只是在配置了opencv_contrib之后,引入头文件#include <opencv2/xfeatures2d.hpp>
在mainwindow.cpp文件下添加相应的包,添加代码如下

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/xfeatures2d.hpp>
using namespace cv;
 Mat image=imread("D:\\m1521\\Pictures\\Saved Pictures\\cute-2528119.jpg",1);namedWindow( "Display window", WINDOW_AUTOSIZE );imshow("Display window", image );

到这里:完整的Qt Creator5.12+OpenCV4.3.0+opencv_contrib4.3.0配置就完成了!

8.本文使用的软件百度网盘下载

链接:https://pan.baidu.com/s/1_gRt_bHAjKq6tRlKgF8FLQ
提取码:4qmo
附上编译后的文件夹opencv-build

参考博客:
两个博客都有用
[1]【Qt5.12】Qt5.12安装教程
[2]win10系统Qt5.12配置OpenCV4.0.1库教程暨Qt,OpenCV,Cmake详细下载安装教程(史上最全!)

Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)相关推荐

  1. Android Studio 配置OpenCV4.4.0 不用安装OpenCV Manager (泪崩居然用了礼拜天2天的时间居然还没配置成功,今天又看了下配置成功了)

    Android Studio 配置OpenCV4.4.0 ,说来惭愧居然用户礼拜天2天的时间呢,期间遇到的问题大致有4个问题 这里我也总结出了最后在列举出来,(可能是新版和之前旧版本不一样的问题按照网 ...

  2. Windows 10 下 Anaconda3 (Python 3.8) 配置 OpenCV-4.4.0

    Anaconda3 配置 OpenCV-4.4.0 我的小站.Github Anaconda指的是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项. Ope ...

  3. Windows 10 下 VS2017(+Clion) C/C++ 配置 OpenCV-4.4.0

    VS2017(+Clion) 配置 OpenCV-4.4.0 我的小站.Github OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视 ...

  4. Win10的64位操作系统,Visual Studio 2019配置OpenCV4.1.0

    一.Win10的64位操作系统,直接在VS官网下载VisualStudioCommunity,默认安装,安装的是VisualStudioCommunity2019: (安装的[工作负载]步骤时选的是[ ...

  5. Qt5.13.2中配置opencv4.5.0踩坑记录

      目录 cmake编译opencv时速度过慢或超时 mingw32-make时报错 错误一 [modules\core\CMakeFiles\opencv_core.dir\build.make:1 ...

  6. VS2019中配置opencv4.3.0(亲测有效)

    写在前面:之前一直使用vs2017+opencv的配置,现在体验vs2019+opencv 4.3.0的配置.由于之前的配置相隔很久,忘记很多东西,如今重新配置还是踩了很多坑,记录如下,希望对读者有帮 ...

  7. 树莓派4B配置OpenCV4.4.0(解决报错)

    树莓派4B配置OpenCV 1.前言 首先,opencv在Linux系统上使用需要编译. 我参考的是这两篇文章. 树莓派4b Opencv安装(真实有效)--授人鱼不如授人以渔 用树莓派4b构建深度学 ...

  8. Ubuntu18.04安装配置OpenCv4.1.0

    1. 安装依赖项 请确保ubuntu已经安装了g++, cmake, make, wget, unzip,vim若没有安装,则使用以下命令安装依次执行: sudo apt install -y g++ ...

  9. vs2019配置opencv4.6.0

    点击链接 https://opencv.org/releases/ 找到 OpenCV4.6.0 Windows 版 下载完后双击打开安装程序(460是我自己创建的文件夹) 接着配置电脑环境变量,在搜 ...

最新文章

  1. 性能测试总结(一)---基础理论篇
  2. Django DTL模板语法中的循环
  3. O2O防刷单并没那么难,看完这个你也会反作弊了
  4. 笔记-高项案例题-2015年上-整体管理
  5. java jsf_将Java 8日期时间API与JSF和Java EE 7结合使用
  6. leetcode 830. 较大分组的位置
  7. SQLServer重建索引
  8. Django的url反向解析
  9. php实验星星塔,简单编程(九)编程制作特殊图案 星星塔(3) 左右星星塔 for循环的嵌套编程...
  10. 日志分析代码实现(字符串切割)
  11. Spring Boot单元测试入门实战之关于JUnit
  12. SlidingMenu使用笔记
  13. ISO50001认证咨询,ISO50001能源管理体系建立的基本步骤及企业的管理权限范围
  14. 各种常用电子元器件的识别方法
  15. 饥荒联机版steam专用服务器创建
  16. 论如何在网页中插入一张图片
  17. 微信公众号怎么生成带粉丝关注统计的渠道二维码
  18. java word模板poi生成文件_poi读写word模板 / java生成word文档
  19. Jquery 回到顶部
  20. Kosaraju算法求强连通分量

热门文章

  1. python3.4安装suds
  2. 抓住二维核力的尾巴---将粒子
  3. js date 加一天_开发效率创新高,只因收下了这波 JS 操作
  4. 【UGV】小车一些图片
  5. 【控制】《鲁棒控制-线性矩阵不等式处理方法》-俞立老师-第7章-保性能控制
  6. 解决Matlab Help文档需要登录才能查看的问题
  7. Linux下GBK文件编码批量转换UTF-8命令
  8. SVN迁移历史日志记录笔记
  9. 微服务基础架构的5个关键问题
  10. 前端日拱一卒D9——ES6笔记之基础篇