QT 与OpenCV 配置的问题与方法-QT5.7+OpenCV3.4.0+Cmake-3.18.1

使用版本:

QT5.7

OpenCV3.4.0

Cmake-3.18.1

第一部分:系统环境变量设置

首先在本机上装好CMake、QT、OpenCV源码。然后配置环境变量。

E:\Qt\Qt5.7.1\5.7\mingw53_32\bin

E:\Qt\Qt5.7.1\Tools\mingw530_32\bin

E:\cmake-3.18.1-win64-x64\bin

【P.S.不要直接复制哦!具体路径请根据自己安装位置,自行修改】

第二部运行CMake

运行cmake-gui.exe

第三部分配置cmake

配置opencv源码和输出路径

E:/opencv3.4.0/sources

D:\01QTOpenCV\buildopencv340

 

设置好路径,点击左下角的【Configure】

点击next

配置gcc和g++路径

选择“MinGW Makefiles”,默认选项“Use default native compilers”(让MinGW通过系统环境变量找到gcc和g++编译器。

也可以手动设置

E:/Qt/Qt5.7.1/Tools/mingw530_32/bin/gcc.exe

E:/Qt/Qt5.7.1/Tools/mingw530_32/bin/g++.exe

 

finish后等待cmake自动配置完成

如果出错,那么需要手动指定QT相关路径。根据个人QT安装路径为准

 

勾选中“WITH_OPENGL”、“WITH_QT”;不勾选“WITH_IPP”。然后再次点【Configure】

 ENABLE_CXX11

1)不能勾选WITH_IPP、ENABLE_PRECOMPILED_HEADERS

2)勾选WITH_OPENGLWITH_QT、OPENCV_ENABLE_NONFREE

可以不用设置这个第3步

3)选择模块contrib的路径,OPENCV_EXTRA_MODULES_PATH设置为openCV contrib 3.4.0的module路径,我这里是:E:\opencv3.4.0\sources\modules

重新点击configure,不出现红色提示为止。

点击“Generate”按钮,生成makefile文件。成功后,底下会提示Generating done。(出现红色警告,可以忽略。。。),如下图所示:

同时需要修改“cap_Dshow.cpp”的文件,修改是在“#include "cap_dshow.hpp”前加宏定义“#define NO_DSHOW_STRSAFE”

配置环境变量,打开Cmake(bin中cmake-gui.exe),选中“WITH_OPENGL”、“WITH_QT”、"OPENCV_ENABLE_NONFREE"、

"OPENCV_EXTRA_MODULES_PATH"路径选择到opencv_contrib目录的modules处。

不选“WITH_IPP” ,"BUILD_opencv_world"(不勾选,如果不编译opencv_contrib则勾选),带java、python的不勾选(因为只用C++)。

生成lib库 mingw32-make

mingw32-make   –j4

E:\Qt\Qt5.7.1\Tools\mingw530_32\bin\mingw32-make.exe

打开cmd或者powershell,进入刚才设置的目标路径,如下图所示:

D:/01QTOpenCV/buildopencv340输入“mingw32-make”命令开始编译。此过程较长,需要30-40分钟左右。

 

安装mingw32-make install

E:\Qt\Qt5.7.1\Tools\mingw530_32\bin\mingw32-make.exe   install

等 100%完成后 然后再执行mingw32-make install

 

install完成

 

再配置环境变量 

这个环境变量是Cmake 生成的 binaries 目录中的bin 。

 

这样我们的QT需要的opencv lib就生成完成。

将原有的opencv源码 中的include文件夹, opencv cmake编译后的文件夹中的bin文件夹和lib文件夹  ,将这三个文件夹复制出来,放在一个自定义的文件夹,以后QT使用opencv只会用到这些文件。我个人的目录如下

E:\opencv3.4.0\build\include       opencv源码 中的include文件夹

D:\01QTOpenCV\buildopencv340\lib     opencv cmake编译后的文件夹中的lib文件夹

D:\01QTOpenCV\buildopencv340\bin     opencv cmake编译后的文件夹中的bin文件夹

这三个文件夹统一放到如下目录

D:\01QTOpenCV\buildopencv340

第四部分测试例程代码:

在.pro文件中的底部 添加头文件和lib库

INCLUDEPATH += D:\01QTOpenCV\buildopencv340\include\
               D:\01QTOpenCV\buildopencv340\include\opencv\
               D:\01QTOpenCV\buildopencv340\include\opencv2\


LIBS+=D:\01QTOpenCV\buildopencv340\lib\libopencv_*.dll.a \

main.h

#ifndef MAIN_H
#define MAIN_H


#include "widget.h"
#include <QApplication>


//OpenCV 头文件
#include "D:\01QTOpenCV\buildopencv340\include\opencv2\opencv.hpp"
#include "D:\01QTOpenCV\buildopencv340\include\opencv2\imgproc/imgproc.hpp"
#include "D:\01QTOpenCV\buildopencv340\include\opencv2\core/core.hpp"
#include "D:\01QTOpenCV\buildopencv340\include\opencv2\highgui/highgui.hpp"




#endif // MAIN_H

main.cpp

#include "main.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);


    cv::Mat image= cv::imread("D:\\01QTOpenCV\\testopencv.jpg");
    cv::namedWindow("My Image");
    cv::imshow("My Image", image);
    cv::waitKey(50000);


    return a.exec();
}

 

运行结果,测试通过

 

猜你喜欢

转载自blog.csdn.net/yuupengsun/article/details/107903768