两种方法实现QT Creator对opencv的配置

前言:最近在PC端QT下配置opencv,做了一个6路摄像头同时调用的功能模块,在QT配置opencv时遇到了很多坑,这里记录一下,希望能帮到需要的人;

本机环境:Windows7-64位
Qt Creator 4.5.1
OpenCV 3.2.0
CMake 3.18.4
最后结果,亲测可用

安装包全部打包,提供百度云链接:
链接:https://pan.baidu.com/s/1aeHHchGvX4Zf6BWnUDR5tg
提取码:6666

总共有两种方式可以完成配置,都需要先安装配置CMake,上述三个安装包会上传到百度云提供下载;

1:安装CMake:
编译opencv需要用到CMake这个工具,安装过程中选择第2个,为所有用户添加系统路径。之后Qt就可以自动找到CMake的路径
两种方法实现QT Creator对opencv的配置
一直下一步,直到安装完成;

接下来将CMake安装路径下的bin路径加入系统环境变量的path中,
具体操作:右键我的电脑->属性->高级系统设置->环境变量->系统变量中双击path进行路径添加,
例如我这里是D:\QTC++\cmake\bin;
两种方法实现QT Creator对opencv的配置
添加完成后,点击确认,CMake就配置完成了;

2:QT Creator安装配置:
下载QT的安装包,进行安装,安装过程中需要注意两个地方,
一个是需要注册才能进行下一步,这里我们不需要注册,只要断网再进行安装就可以跳过这一步
两种方法实现QT Creator对opencv的配置
另一个是安装组件选择的时候,需要点击全选
两种方法实现QT Creator对opencv的配置
其余都没什么可说的了,就是一直下一步,知道安装结束,就可以打开QT了;
安装完成后,需要配置环境变量,将QT安装路径下的5.10.1文件夹下的msvc2017_64的bin路径加入path中;
以及安装目录下Tools文件夹下的mingw530_32中的bin路径加入path中;;
例如我的路径为
D:\QTC++\5.10.1\msvc2017_64\bin;
D:\QTC++\Tools\mingw530_32\bin;
两种方法实现QT Creator对opencv的配置
两种方法实现QT Creator对opencv的配置

添加完成后点击确定退出,QT就配置结束了;

3:opencv安装配置:
opencv安装较为简单,一步完成,就不细说了。

将VC14下的bin路径加入path路径中
例如我这里是:D:\Opencv\opencv\build\x64\vc14\bin

4:在…\opencv\sources\modules\videoio\src\cap_dshow.cpp文件中进行修改(这一步异常关键)

在#include "DShow.h"这一行前加上#define NO_DSHOW_STRSAFE

至此,以上三个需要的工具软件都已经安装配置结束,接下来就是进行QT下opencv的配置工作了,一共两种方式,分开讲述:

方式一:
使用CMake进行opencv的编译工作:
打开CMake,进行配置
我这里新建的文件夹为buildopencv,用来存放编译生成的opencv包
两种方法实现QT Creator对opencv的配置
这里一定不要选错了选择MinGW Makefiles,下面选择第二个,点击next
两种方法实现QT Creator对opencv的配置
配置C和C++编译器路径(P.S.具体路径请根据自己电脑中QT的安装目录)
例如我这里是:
D:\QTC++\Tools\mingw530_32\bin\gcc.exe
D:\QTC++\Tools\mingw530_32\bin\g++.exe
点击finish
两种方法实现QT Creator对opencv的配置
配置完成后,如果顺利就会出现下列界面,红色只有两条(这里部分图是用的别人的,所以部分路径不太统一,一切以自己情况为主),点击Configure进行配置
两种方法实现QT Creator对opencv的配置
配置完成后,出现以下界面,接下来就是关键点,请务必仔细:
两种方法实现QT Creator对opencv的配置

<1>取消勾选 ENABLE_PRECOMPILED_HEADERS
<2>勾选WITH_OPENGL
<3>勾选WITH_QT
勾选完成后,再次点击【Configure】

之后出现下图,这些红色的是需要修改路径的,但是我在配置的过程中,发现有的时候不需要再修改路径,有的时候需要修改路径;怎么判断呢?就是看一下路径中是否都包含mingw53_32,如果包含,证明路径本身就是正确的,直接点击【Configure】即可。如果不包含,则需要手动修改路径,需要改
QT_QMAKE_EXECUTABLE值为:D:/DiyProgram/Qt/5.8/mingw53_32/bin/qmake.exe

Qt5Concurrent_DIR值为:D:\QTC++\5.10.1\mingw53_32\lib\cmake\Qt5Concurrent

Qt5Core_DIR 值为:D:\QTC++\5.10.1\mingw53_32\lib\cmake\Qt5Core

Qt5Gui_DIR 值为:D:\QTC++\5.10.1\mingw53_32\lib\cmake\Qt5Gui

Qt5Test_DIR 值为:D:\QTC++\5.10.1\mingw53_32\lib\cmake\Qt5Test

Qt5Widgets_DIR 值为:D:\QTC++\5.10.1\mingw53_32\lib\cmake\Qt5Widgets
两种方法实现QT Creator对opencv的配置
再次点击【Configure】后,就不会再出现红色条目了,这个时候注意了,如果列表中有python3这一项,推荐取消勾选,这样可以防止部分机型编译出错:
两种方法实现QT Creator对opencv的配置
上步运行完毕后,点【Generate】,完成后,可以关闭CMake了;

进入编译后的生成文件目录D:\build_opencv,然后该文件夹的空白处Shift+右键,选择“在此处打开命令窗口”。

输入“mingw32-make”命令,按回车进行编译。这个过程非常久,电脑配置比较好的半小时左右,一般的一小时左右。
两种方法实现QT Creator对opencv的配置

当他到达百分之百之后,输入 “mingw32-make install ”等到安装完成关闭即可。

添加新生成的bin到Path环境变量:
D:\QTC++\buildOpencv\bin 添加到Path环境变量中,完成;

至此,第一种配置方法完成,打开QT,在.pro文件中的底部,添加如下内容

INCLUDEPATH += D:\Opencv\opencv\build\include
D:\Opencv\opencv\build\include\opencv
D:\Opencv\opencv\build\include\opencv2

LIBS +=D:\QTC++\buildOpencv\lib\libopencv_*.a

至此,配置完成,即可开始进行QT下的opencv应用开发了;

方式二:
使用QT本身调用CMake进行opencv的编译配置 :

确认Qt成功找到 CMake

打开 Qt Creator,工具->选项->构建和运行->CMake,如果之前 CMake 配置好了系统路径,这里应该会自动加载到系统路径,否则手动指定CMake的路径。
两种方法实现QT Creator对opencv的配置
用 Qt 打开 opencv 项目

打开opencv安装目录下sources目录下的CMakeLists.txt文件,QT就会自动进行opencv包的读取工作
读取过程中,进入【项目】,编译构造配置选择Release。
两种方法实现QT Creator对opencv的配置
等几分钟,这段时间 Qt 正在读取 CMakeLists.txt 文件,当在概要信息看到 Configuring done 和 Generating done 就证明读取完了。
两种方法实现QT Creator对opencv的配置
进入【项目】,找到 CMAKE_INSTALL_PREFIX,设置一个路径,这个路径是编译完成后输出的路径。其他配置保持默认。
<1>取消勾选 ENABLE_PRECOMPILED_HEADERS
<2>勾选WITH_OPENGL
<3>勾选WITH_QT
<4>如果有python3选项,也取消勾选
然后点击 Apply Configuration Changes。未保存的内容会是粗体字,已改变的配置将会是斜体字,再点一次 Apply Configuration Changes,Apply Configuration Changes 按钮将会变成灰色。
两种方法实现QT Creator对opencv的配置
再到构建步骤,详情,勾选install,然后点右下角的“锤子”,开始构建。构建过程要保持网络通畅,因为构建时会下载部分文件。这个过程会花半个小时左右。
两种方法实现QT Creator对opencv的配置
构建完成后,继续配置opencv系统路径
对计算机右键->属性->高级系统配置->环境变量>Path 变量里加入编译后的opencv的bin文件夹的路径,用分号跟其他路径分隔。
例如我这里是:
D:\Opencv\opencv\build-sources-Desktop_Qt_5_10_1_MinGW_32bit-Release\bin

接下里在QT的项目中的pro文件中添加

INCLUDEPATH += D:\Opencv\opencv\build\include
D:\Opencv\opencv\build\include\opencv
D:\Opencv\opencv\build\include\opencv2

LIBS += D:\Opencv\opencv\build-sources-Desktop_Qt_5_10_1_MinGW_32bit-Release\lib\libopencv_*.a

至此,第二种配置方式也完成了;