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

本文结构

    • 第一部分 只安装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.本文使用的软件百度网盘下载

最终结果展示
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第1张图片
笔者使用的版本如下
友情提示:这里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版本
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第2张图片

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

双击安装包
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第3张图片

这里需要注册qt账户
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第4张图片

注册成功后登录
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第5张图片
自定义安装路径,要求路径不能含有空格

选择组件
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第6张图片
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第7张图片

同意协议许可
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第8张图片

点击下一步
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第9张图片
下一步进行安装
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第10张图片

安装完成显示如下
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第11张图片
默认是打开Qt界面
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第12张图片

2.Cmake下载与安装

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

Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第13张图片
安装
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第14张图片

笔者选择了如下配置:配置全局变量和创建桌面快捷方式
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第15张图片
更改安装路径
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第16张图片
安装完成
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第17张图片

3.OpenCV下载

官方下载地址:https://opencv.org/releases/
目前最新版本是4.3.0
这里选择windows
在这里插入图片描述
下载完压缩包名:opencv-4.3.0-vc14_vc15.exe
解压完文件名:opencv
在这里插入图片描述

下面是将mingw加入环境变量
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第18张图片

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

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

这是下载Qt时候的路径,需要自己找到
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第19张图片
根据知乎:PATH和path是一样的,原因是:Windows系统对大小写不敏感。

Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第20张图片

4.编译OpenCV

根据安装路径,找到Cmake,点击cmake.gui.exe
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第21张图片
where is the source code
添加opencv的sources

D:/opencv/sources

新建文件夹opencv-build
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第22张图片

where to build the binaries

D:/opencv/opencv-build

Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第23张图片
保持默认MinGW Makefiles,点击Specify native compilers,再next
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第24张图片

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

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

C++

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

Fortran不用填
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第25张图片

需要下拉,选中下面这两个WITH_OPENGL和WITH_QT
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第26张图片

出现错误
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第27张图片
错误信息
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第28张图片

CMake Error at cmake/OpenCVFindLibsGUI.cmake:18 (find_package):
  Could not find a package configuration file provided by "Qt5" with any of
  the following names:

    Qt5Config.cmake
    qt5-config.cmake

  Add 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 a
  separate 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时候的编译器选项位置
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第29张图片
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第30张图片
完成之后来到下面的界面
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第31张图片

然后再次点击configure,然后显示configuring done
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第32张图片

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

D:/opencv/opencv-build

可以看到如下生成的文件
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第33张图片

鼠标放在该文件夹内,按住Shift键右击鼠标,选择在此处打开Powershell窗口
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第34张图片
在Powershell中输入

mingw32-make -j 8

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

进行到40%发生错误(这是没有添加opencv-contrib扩展库时候的报错)
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第35张图片

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

Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第36张图片
打开flags.make,然后把RC-DEFINES(下面划线部分)替换掉
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第37张图片
替换代码(注: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

最终编译完成
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第38张图片

100%之后输入

mingw32-make install

完成之后退出

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

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

Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第39张图片

5.测试Qt程序

新建project
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第40张图片
选择默认的项目Application-Qt Widgets Application
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第41张图片

项目命名和位置:注意这里不能有中文路径,下面是错误的示范,后面笔者又新建项目,重新改成英文的路径,否则会报错
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第42张图片
默认下一步
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第43张图片
继续下一步
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第44张图片

点击完成
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第45张图片

在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

Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第46张图片
在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_contrib扩展包(亲测有效)_第47张图片

点击左下角的锤子,进行构建
在这里插入图片描述
会显示正确的信息如下

01:55:07: 为项目test执行步骤 ...
01:55:07: 配置没有改变, 跳过 qmake 步骤。
01:55:07: 正在启动 "D:\Qt5.12.2\Tools\mingw730_64\bin\mingw32-make.exe" -j8

D:/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.

点击绿色的箭头运行
在这里插入图片描述
测试结果
显示出图片
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第48张图片

至此,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扩展)配置详解
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第49张图片
由于是后面补充的contrib扩展库,打开Cmake,在第一部分配置成功后选中下面这个NONFREE
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第50张图片

再搜索path,找到OPENCV-EXTRA-MODULES_PATH,配置value,找到解压后的扩展库,路径到modules文件,这里配置value
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第51张图片

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

然后generate(下面这是错误的图,因为未去掉BUILD_CUDA_STUBS)
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第52张图片

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

mingw32-make -j 8

在26%遇到问题
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第53张图片

[ 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
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第54张图片

后面遇到错误
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第55张图片

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

解决办法:如果出现dynafu.cpp的错误,BUILD_opencv_rgbd与WITH_OPENGL只能勾选其一
去掉勾选BUILD_opencv_rgbd
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第56张图片

还发现这样的错误


[ 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%还是有错误
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第57张图片

 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文件夹下复制下面两个文件到报错的路径下
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第58张图片

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

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

Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第59张图片

修改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文件
修改前
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第60张图片

修改后

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

Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第61张图片
还有错误
在这里插入图片描述

同样的步骤,把相应的文件复制过来,结果100%成功
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第62张图片

100%之后输入

mingw32-make install

完成之后退出

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

请参考第5步:测试Qt程序
这里只是在配置了opencv_contrib之后,引入头文件#include
在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_contrib扩展包(亲测有效)_第63张图片

Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第64张图片

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

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

链接:https://pan.baidu.com/s/1_gRt_bHAjKq6tRlKgF8FLQ
提取码:4qmo
附上编译后的文件夹opencv-build
Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)_第65张图片
参考博客:
两个博客都有用
[1]【Qt5.12】Qt5.12安装教程
[2]win10系统Qt5.12配置OpenCV4.0.1库教程暨Qt,OpenCV,Cmake详细下载安装教程(史上最全!)

你可能感兴趣的:(opencv)