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

news2024/9/21 2:39:45

一、安装前准备:

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自动驾驶---Perception之Occupancy

1 背景 在阐述Occupancy之前&#xff0c;先理解为什么要使用Occupancy&#xff1f; 如果自动驾驶车辆在行驶过程中看到的物体不是数据集的一部分&#xff0c;这个时候容易出现误判。 而在基于激光雷达的系统中&#xff0c;由于检测到点云&#xff0c;可以确定障碍物的存在&…

《Windows API每日一练》8.5 listbox控件

列表框是将一批文本字符串显示在一个具有滚动功能的方框中的控件。通过发送消息到列表框的窗口过程&#xff0c;程序可以添加或删除列表中的字符串。当列表框中的一个项目被选中时&#xff0c;列表框控件便发送 WM_COMMAND消息到其父窗口。然后父窗口确定哪个项目被选中。 本节…

C# 中的Semaphore(信号量)详解与应用

文章目录 1. 信号量是什么&#xff1f;2. C# 中的 Semaphore 类3. 信号量的使用示例3.1 创建信号量3.2使用信号量同步线程 4. 总结 在并发编程中&#xff0c;同步是一种基本的需求。信号量&#xff08;Semaphore&#xff09;是一种常见的同步机制&#xff0c;它用于控制对共享资…

Jhipster实战中遇到的知识点-开发记录

利用Jhipster开发的网站天赋吉星终于上线啦&#xff0c;本文介绍了在开发过程中遇到的各种小的知识点和技巧&#xff0c;绝对干货&#xff0c;供你参考。大家可以直接点击天赋吉星&#xff0c;看到网站效果。 首先介绍一下项目技术选型&#xff0c;JHipster 版本:8.1.0, 项目类…

stm32 USB CDC类虚拟串口初体验

1. 目标 本文介绍CubeMX生成 USB CDC类虚拟串口工程的操作步骤。 2. 配置流程 时钟配置 usb外设需要48M时钟输入 stm32405使用外部时钟源HSE,否则配不出来48M时钟stm32h750内部有一个48M时钟 stm32f405时钟配置 stm32h750时钟配置 Connectivity ->USB_OTG_FS 和 Connect…

windows obdc配置

进入控制面板&#xff1a; 进入管理工具&#xff1a;

MAC在网络结构中的位置:深入解析

MAC在网络结构中的位置&#xff1a;深入解析 在网络通信的世界里&#xff0c;每一层都扮演着至关重要的角色。今天&#xff0c;我们将聚焦于一个经常被提到但可能不太被理解的概念&#xff1a;MAC&#xff08;Media Access Control&#xff0c;媒体访问控制&#xff09;。我们…

智慧产业应用实训实践基地-信息类专业实践实验室-嵌入式、物联网、移动互联网、云计算、大数据、人工智能、区块链实训室

智慧产业实践基地面向信息类专业群&#xff0c;以智慧灯杆、智慧交通、智慧设施在智慧产业中的实际实践为项目原型&#xff0c;软硬件开源、开放&#xff0c;海量的技术资料和实训课程。整个系统运用了嵌入式、物联网、移动互联网、云计算、大数据、人工智能、区块链等综合交叉…

three-tile 一个开源的轻量级三维瓦片库

three-tile 介绍 three-tile 是一个开源的轻量级三维瓦片库&#xff0c;它基于threejs使用typescript开发&#xff0c;提供一个三维地形模型&#xff0c;能轻松给你的应用增加三维瓦片地图。 源码&#xff1a;https://github.com/sxguojf/three-tile 示例&#xff1a;https:/…

音频demo:将PCM数据与alaw、mulaw、g711数据的相互转换

1、README 前言 (截图来源&#xff1a;https://blog.csdn.net/u014470361/article/details/88837776) 我的理解&#xff1a; 首先需要知道的是u-law/a-law是用于脉冲编码的压缩/解压缩算法。而G.711是指在8KHz采样率&#xff08;单声道&#xff09;中&#xff0c;使用的u-law或…

uni-app 封装http请求

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

搞不清啊?伦敦金与上海金区别是?

进入黄金市场的朋友&#xff0c;有可能会被各式各样的黄金交易品种带得眼花缭乱&#xff0c;其实各品种虽然都以黄金作为投资标的物&#xff0c;但是也是各有不同的&#xff0c;下面我们就来比较一下相似的投资品种——伦敦金和上海金。 首先在比较之前&#xff0c;我们要搞清楚…

计算机毕业设计Django+Vue.js考研推荐系统 考研分数线预测 中公考研爬虫 混合神经网络推荐算法 考研可视化 机器学习 深度学习 大数据毕业设计

Python数据分析与可视化期末项目报告 项目名称&#xff1a; 考研推荐系统数据分析与可视化 学 号&#xff1a; 姓 名&#xff1a; …

Spire.PDF for .NET【文档操作】演示:以特在 C# 中创建 PDF/A-1a 文件

PDF/A-1 标准为 PDF 文件指定了两个符合性级别&#xff1a;PDF/A-1a&#xff08;符合 A 级&#xff09;和 PDF/A-1b&#xff08;符合 B 级&#xff09;。使用 Spire.PDF&#xff0c;您可以轻松创建 PDF/A-1a 和 PDF/A-1b 文件。本文演示了如何使用 Spire.PDF 创建 PDF/A-1a 文件…

MySQL第三次练习

作业三 一 先创建DB abc&#xff0c;创建table student 1、插入一条记录 2、添加多条记录 3、添加部分记录 4、加0.5 5、删除成绩为空的记录 二 1、创建一个用户test1使他只能本地登录拥有查询student表的权限。 2、查询用户test1的权限。 3、删除用户test1. 全在一张图上…

刀客网源码账号合租平台

最新租号平台系统源码&#xff0c;支持单独租用或合租使用 这是一款租号平台源码&#xff0c;采用常见的租号模式。 平台的主要功能如下&#xff1a; 支持单独租用或采用合租模式&#xff0c;采用易支付通用接口进行支付&#xff0c;添加邀请返利功能&#xff0c;以便站长更好…

ubuntu22.04搭建mysql5.7

1.1 下载mysql安装包 MySQL下载地址&#xff1a;MySQL :: Download MySQL Community Server (Archived Versions) #下载wget https://cdn.mysql.com/archives/mysql-5.7/mysql-server_5.7.29-1ubuntu18.04_amd64.deb-bundle.tar#解压tar -xvf ./mysql-server_5.7.29-1ubuntu18…

排序学习笔记

1.什么是排序 1.1排序的概念 概念&#xff1a;排序的概念其实非常简单&#xff0c;本质上就是将一堆记录按照从大到小(降序)&#xff0c;从小到大(升序)来进行排序。我们日常生活中每天都有着不同的排序&#xff0c;比如年龄大小排序&#xff0c;身高的排序等等。 稳定性&am…

如何把已经上传到gitlab的代码或者文件夹从git上删掉

有小伙伴不小心把缓存文件上传到了git&#xff0c;跑来问我&#xff0c;要怎么把这些文件给删掉&#xff0c;这里一共有两种方式&#xff0c; 先说第一种&#xff0c;通过命令删除&#xff0c;终端进入存在这个缓存文件的目录&#xff0c;执行命令ls&#xff0c;可以看到确实有…

STM32学习历程(day5)

EXTI外部中断 中断 中断就是在主程序运行过程中 出现了特定的中断触发条件&#xff08;中断源&#xff09;&#xff0c;CPU会暂停当前的程序&#xff0c;去处理中断程序 处理完会返回被暂停的位置 继续运行原来的程序。 中断优先级 当有多个中断源同时申请中断时 CPU会根据…