使用版本:
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_OPENGL、WITH_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();
}
运行结果,测试通过