QT5.12.9 通过MinGW64 / MinGW32 cmake编译Opencv4.5.1

一、安装前准备:

1.安装QT,QT5.12.9官方下载链接:https://download.qt.io/archive/qt/5.12/5.12.9/

QT安装教程:https://blog.csdn.net/Mark_md/article/details/108614209

如果电脑是64位就编译器选择MinGW64,32位就选择MinGW32,我的是MinGW64。

2.opencv源码下载:https://github.com/opencv/opencv/tags

下载之后将源码文件夹名称改为sources也可以改为其他的,方便之后寻找使用,同时新建一个build空文件夹:

3.安装cmake:https://cmake.org/download/

4.配置环境变量:

配置MinGW环境变量,将上次安装在qt的mingw的bin路径添加到系统环境变量Path里

例:我的位置是D:\Programs\Qt\Qt5.12.12\Tools\mingw730_64\bin

那么:

二、Cmake配置

2.1第一次configure

打开cmake-gui,选择源码路径和刚才新建的文件夹的路径,勾选Advanced然后点击一下configure

弹出的窗口CMake会自动选择本机已经安装的目标编译器,我们上面配置了MinGW环境,所以会默认使用MinGW Makefiles .单击"Finish",然后就会开始执行生成,第一次configure大概是这样子:

2.2第二次configure

然后我们先去勾选with_qt 和 with_opengl取消勾选 opencv_enable_allocator_stats:

with_qt

with_opengl

取消勾选和python有关的所有选项,(python用到的话直接终端 pip install -i https://pypi.douban.com/simple opencv-python 就OK)

点击configure,一般会报错,因为还没配置qt5,因为我们最终目的是编译opencv给qt使用,故需要配置QT的路径

2.3第三次configure

输入qt5,配置如下图片:改为自己安装QT的位置,我的是E:/QT/5.12.9/mingw73_64/lib/cmake/***

设置 QT_MAKE_EXECUTABLE 为

E:\Qt5.9.3\5.9.3\mingw53_32\bin\qmake.exe

备注:此项没有,需要点击Add Entry添加

Name:QT_MAKE_EXECUTABLE ,Type: PATH ,Value:E:\Qt5.9.3\5.9.3\mingw53_32\bin\qmake.exe

设置 Qt5Concurrent_DIR 为 E:/QT/5.12.9/mingw73_64/lib/cmake/Qt5Concurrent

设置 Qt5Core_DIR 为 E:/QT/5.12.9/mingw73_64/lib/cmake/Qt5Core

设置 Qt5Gui_DIR 为 E:/QT/5.12.9/mingw73_64/lib/cmake/Qt5Gui

设置 Qt5Test_DIR 为 E:/QT/5.12.9/mingw73_64/lib/cmake/Qt5Test

设置 Qt5Widgets_DIR 为E:/QT/5.12.9/mingw73_64/lib/cmake/Qt5Widgets

设置 Qt5OpenGL_DIR 为 E:/QT/5.12.9/mingw73_64/lib/cmake/Qt5OpenGL

再次点击 "Configure",再次配置

若出现ffmpeg的下载报错,不处理的话将会导致我们的opencv无法处理视频,首先在sources里找到对应的文件

用记事本打开ffmpeg.cmake文件修改:在加量、亮那句话前加:

GitHub Proxy 代理加速

改完后保存,再次点击configure,直到选项框没有红色出现为止后,点击generate生成makefile

三、mingw32-make编译

之后进入我i们build文件夹下,在文件路径处输入'cmd',然后按回车

进入终端:在弹出来的cmd中,输入

复制代码
mingw32-make -j 4 #4是4线程 可以加快编译速度 视电脑性能而定

结束后执行安装:

复制代码
mingw32-make install

安装后将安装路径"A:\Haitun2\sensorsdata\Camera\opencv\build\install\x64\mingw\bin"添加到系统变量path,注意自己的文件位置。然后重启

四、QT使用刚才编译的QT:

在.pro文件里加入如下代码:

复制代码
#opencv
win32{
INCLUDEPATH += A:\Haitun2\sensorsdata\Camera\opencv\build\install\include
#LIBS += A:\Haitun2\sensorsdata\Camera\opencv\build\install\x64\mingw\bin\libopencv_*.dll
LIBS += A:\Haitun2\sensorsdata\Camera\opencv\build\lib\libopencv_*.a
}

测试程序1,在main.cpp里,使用opencv的imshow来显示摄像头视频

复制代码
#include <QApplication>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    VideoCapture cap;
    if(!cap.open(0)){//打开0端口摄像头
        return -1;
    }else{

        Mat img;
        while (1) {
            if(!cap.read(img)){
                continue;
            }else{
                imshow("img",img);
                cv::waitKey(1);
            }

        }

    }

    return a.exec();
}
相关推荐
于壮士hoho19 分钟前
Python | Dashboard制作
开发语言·python
xiaoyaoyou.xyz44 分钟前
嵌入式Linux Qt开发:1、搭建基于ubuntu18.04的Qt开发环境及测试(解决Qt creator输入法问题)
linux·qt
Asus.Blogs1 小时前
为什么go语言中返回的指针类型,不需要用*取值(解引用),就可以直接赋值呢?
开发语言·后端·golang
青瓦梦滋1 小时前
【语法】C++的多态
开发语言·c++
C_V_Better1 小时前
Java Spring Boot 控制器中处理用户数据详解
java·开发语言·spring boot·后端·spring
t198751282 小时前
基于Qt的OSG三维建模
java·开发语言
AI视觉网奇2 小时前
3d关键点 可视化
开发语言·python·pygame
向宇it2 小时前
【unity游戏开发——编辑器扩展】使用EditorGUI的EditorGUILayout绘制工具类在自定义编辑器窗口绘制各种UI控件
开发语言·ui·unity·c#·编辑器·游戏引擎
Python私教3 小时前
Rust:重新定义系统编程的安全与效率边界
开发语言·安全·rust
cainiao0806053 小时前
Java 大视界——Java 大数据在智慧交通智能停车诱导系统中的数据融合与实时更新
java·大数据·开发语言