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();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/784743.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C#描述-计算机视觉OpenCV(5):直方图算法

C#描述-计算机视觉OpenCV&#xff08;5&#xff09;&#xff1a;直方图算法 前文链接图像直方图灰度直方图的计算灰度直方图的绘制BGR三通道的直方图直方图的均衡化算法相似图像检测 前文链接 文中没提到的东西&#xff0c;很可能都在前文描述过 C#描述-计算机视觉OpenCV&…

【C++深度探索】继承机制详解(二)

hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#xff1a;大耳朵土土垚的博客 &#x1…

深入解析:抖音视频标题的Python爬虫提取方法

引言 随着短视频的兴起&#xff0c;抖音已经成为全球最受欢迎的社交媒体平台之一。对于数据分析师、市场研究人员以及内容创作者来说&#xff0c;能够从抖音上抓取数据是一项宝贵的技能。本文将深入解析如何使用Python编写爬虫程序来提取抖音视频的标题。 爬虫基础 在开始编…

K8S 上部署大数据相关组件

文章目录 一、前言二、Redis 一、前言 Artifact Hub 是一个专注于云原生应用的集中式搜索和发布平台。它旨在简化开发者在 CNCF&#xff08;Cloud Native Computing Foundation&#xff09;项目中寻找、安装和分享包与配置的过程。用户可以通过这个平台方便地发现、安装各类云原…

为什么需要重写equals和如何重写equals

首先先看Java中的 &#xff0c;比较的两个对象的地址值。 如果是基本数据类型&#xff0c;那么就是比较的是值。 如果是引用数据类型&#xff0c;比较的就是地址. object类中的equals方法也是用的&#xff1b; 所以要比较两个对象的大小&#xff0c;去调用默认的equals方法…

Apache Spark分布式计算框架架构介绍

目录 一、概述 二、Apache Spark架构组件栈 2.1 概述 2.2 架构图 2.3 架构分层组件说明 2.3.1 支持数据源 2.3.2 调度运行模式 2.3.3 Spark Core核心 2.3.3.1 基础设施 2.3.3.2 存储系统 2.3.3.3 调度系统 2.3.3.4 计算引擎 2.3.4 生态组件 2.3.4.1 Spark SQL 2.…

关系型数据库MySQL和时序数据库的区别?

时序数据库和关系型数据库是两种不同类型的数据库系统&#xff0c;它们在设计理念、存储结构、性能优化等方面有显著差异&#xff0c;以适应不同的应用场景和需求。具体对比如下&#xff1a; 数据存储结构 时序数据库&#xff1a;使用列式存储&#xff0c;每条记录通常包含时间…

MySQL资源组的使用方法

MySQL支持创建和管理资源组&#xff0c;并允许将服务器内运行的线程分配给特定的组&#xff0c;以便线程根据组可用的资源执行。组属性允许控制其资源&#xff0c;以启用或限制组中线程的资源消耗。DBA可以针对不同的工作负载适当地修改这些属性。 目前&#xff0c;CPU时间是一…

田地行走-美团2023笔试(codefun2000)

题目链接 田地行走-美团2023笔试(codefun2000) 题目内容 塔子哥是一个农民&#xff0c;他有一片 nm 大小的田地&#xff0c;共 n 行 m 列&#xff0c;其中行和列都用从 1 开始的整数编号&#xff0c;田地中有 k 个格子中埋有土豆。我们记第 a 行第 b 列的格子为 (a,b) 。塔子哥…

LM2596/LM2596S多路降压稳压DC-DC开关电源芯片详解(第二部分:电路设计)(12V转5V、12V转3.3V、任意电压转任意电压)

目录 一、固定电压&#xff08;3.3/5/12V&#xff09;模块设计实例 1.设计条件&#xff1a;VOUT5V&#xff0c;VIN(MAX)12V&#xff0c;ILOAD(MAX)3A 2.设计步骤&#xff1a; &#xff08;1&#xff09;电感的选择&#xff08;L1&#xff09; &#xff08;2&#xff09;输…

C++入门基础

前言 本篇博客讲解一下c得入门基础 &#x1f493; 个人主页&#xff1a;普通young man-CSDN博客 ⏩ 文章专栏&#xff1a;C_普通young man的博客-CSDN博客 ⏩ 本人giee:普通小青年 (pu-tong-young-man) - Gitee.com 若有问题 评论区见&#x1f4dd; &#x1f389;欢迎大家点赞&…

掌握计算机网络基础:从零开始的指南

计算机网络是现代信息社会的重要基石。本文将以简洁明了的方式为基础小白介绍计算机网络的基本概念、分类、以及其在信息时代中的重要作用。 计算机网络在信息时代中的作用 21世纪是以数字化、网络化、信息化为重要特征的信息时代。 计算机网络作为信息的最大载体和传输媒介&…

微信自动加好友工具

批量导入数据到后台&#xff0c;可设置添加速度、间隔时间、验证信息和自动备注等&#xff0c;任务执行时间&#xff0c;后台会自动执行操作。

ubuntu 分区情况

ubuntu系统安装与分区指南 - Philbert - 博客园 (cnblogs.com)https://www.cnblogs.com/liangxuran/p/14872811.html 详解安装Ubuntu Linux系统时硬盘分区最合理的方法-腾讯云开发者社区-腾讯云 (tencent.com)https://cloud.tencent.com/developer/article/1711884

基于flask的猫狗图像预测案例

&#x1f4da;博客主页&#xff1a;knighthood2001 ✨公众号&#xff1a;认知up吧 &#xff08;目前正在带领大家一起提升认知&#xff0c;感兴趣可以来围观一下&#xff09; &#x1f383;知识星球&#xff1a;【认知up吧|成长|副业】介绍 ❤️如遇文章付费&#xff0c;可先看…

uni-app 封装http请求

1.引言 前面一篇文章写了使用Pinia进行全局状态管理。 这篇文章主要介绍一下封装http请求&#xff0c;发送数据请求到服务端进行数据的获取。 感谢&#xff1a; 1.yudao-mall-uniapp: 芋道商城&#xff0c;基于 Vue Uniapp 实现&#xff0c;支持分销、拼团、砍价、秒杀、优…

2024年6月总结 | 软件开发技术月度回顾(第一期)

最新技术资源&#xff08;建议收藏&#xff09; https://www.grapecity.com.cn/resources/ Hello&#xff0c;大家好啊&#xff01;随着欧洲杯和奥运会的临近&#xff0c;2024 年下半年的序幕也随之拉开。回顾 2024 年上半年的技术圈&#xff0c;我们看到了一系列令人振奋的进展…

ELfK logstash filter模块常用的插件 和ELFK部署

ELK之filter模块常用插件 logstash filter模块常用的插件&#xff1a; filter&#xff1a;表示数据处理层&#xff0c;包括对数据进行格式化处理、数据类型转换、数据过滤等&#xff0c;支持正则表达式 grok 对若干个大文本字段进行再分割成一些小字段 (?<字段名…

51单片机嵌入式开发:5、按键、矩阵按键操作及protues仿真

按键、矩阵按键操作及protues仿真 1 按键介绍1.1 按键种类1.2 按键应用场景 2 按键电路3 按键软件设计3.1 按键实现3.2 按键滤波方法3.3 矩阵按键软件设计3.4 按键Protues 仿真 4 按键操作总结 提示 1 按键介绍 1.1 按键种类 按键是一种用于控制电子设备或电路连接和断开的按…

LLM之RAG实战(四十一)| 使用LLamaIndex和Gemini构建高级搜索引擎

Retriever 是 RAG&#xff08;Retrieval Augmented Generation&#xff09;管道中最重要的部分。在本文中&#xff0c;我们将使用 LlamaIndex 实现一个结合关键字和向量搜索检索器的自定义检索器&#xff0c;并且使用 Gemini大模型来进行多个文档聊天。 通过本文&#xff0c;我…