【QT入门到晋级】window opencv安装及引入qtcreator(包含两种qt编译器:MSVC和MinGW)

前言

        本文主要分享QT的两种编译器环境(MSVC和MinGW)下,安装及引入opencv的方法。

编译器区别

特性​​MSVC​​MinGW​
​编译器类型​微软专有编译器(cl.exe基于GCC的开源工具链
​平台支持​仅Windows跨平台(Windows/Linux/macOS兼容)
​运行时库​Microsoft CRT(如ucrtvcruntimeGNU标准库(glibc或其变体)
​异常处理​结构化异常处理(SEH)标准C++异常(try-catch
​多线程模型​原生Win32线程API支持POSIX线程或Win32线程
​调试工具​Visual Studio强大图形化调试器GDB命令行调试,功能较弱
​第三方库兼容性​需MSVC编译的库(.lib/.dll需MinGW编译的库(.a/.dll.a

                                                (以上内容来源于网络)

        简单的说就是,MinGW编译器是QT通用编译器,适合做跨平台迁移,比如Linux的QTcreator编译OK的代码(只要要没有专门调用linux特性的函数),移植到window时,在MinGW编译器下都能编译通过,本人分享的很多源码,都是可以在linux/window编译通过。

        而MSVC编译器是深度集成了Windows API,比如用visual Studio开发的C++项目,可以很容易的转化为QT项目(处理一些类型,把链接库写到.pro文件中)。

        另外提醒一个坑点,MinGW编译器的代码是可以使用#include<window.h>来使用Windows API,但是会缺少很多接口,或者是接口无效,而MSVC编译器使用#include<window.h>可以调用全部的Windows API(等效于visual Studio调用API)。

安装前简要说明

        本文使用的是opencv官网编译好的安装程序,这个程序是在MSVC下编译的,所以QT MSVC编译器版本安装比较简单;而QT MinGW编译器版本,可以下载源码后重新编译(麻烦),或者是使用中间件接口来调用MSVC的接口(简单),本文只介绍简单的方式。

QT安装opencv环境

MSVC编译器

待安装软件

opencv安装包:opencv-4.5.2-vc14_vc15.exe   

 如果要使用其他更新的包,可以访问官网地址:https://opencv.org/releases/ 

安装操作

1、应用安装

点击安装包之后,只需要填入安装路径即可,如下图,本人安装在D:\software\opencv目录下

2、环境变量设置

安装完成之后,需要配置系统环境变量,方便QT项目引用

3、QT项目引入opencv库

以上加上环境变量包含之后,不需要重启电脑,直接创建一个MSVC编译器的QT项目,然后右键点击项目,在右键菜单中选择【添加库...】

选择外部库,进入下一步

然后填写上库文件路径和头文件目录路径,如下图填写

创建完成之后,在.pro文件中,可看到新增了如下内容

如果嫌弃这种添加方式操作步骤多,可以在opencv目录下,创建一个openvb.pri文件,把上面导入外部库生成的.pro内容剪切出来,粘贴到opencv.pri中,然后改一下路径(去掉../.../),然后在.pro文件中引入pencv.pri文件即可(以后的项目需要opencv库时,只需要引入这个文件即可)

include(D:\opencv\opencv.pri)

测试代码

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);Mat image=imread("D:/123.png");namedWindow( "show", WINDOW_AUTOSIZE );imshow("show",image);
}

以上测试代码是两个编译器通用的

MinGW编译器

待安装软件

opencv安装包:opencv-4.5.2-vc14_vc15.exe     这个是必须安装的。

接口中间件:OpenCV-MinGW-Build-OpenCV-4.5.2-x64 这个一定要选择跟以上一样的4.5.2版本,可以选择其他的版本,但是两个安装包的版本一定要一样。

安装操作

1、应用安装

opencv安装包,与MSVC编译器的安装完全一样

2、接口中间件安装

也安装到D:\software\opencv目录下,方便管理

3、环境变量设置

在path中加入接口中间件的路径

D:\opencv\opencvMinGW\OpenCV-MinGW-Build-OpenCV-4.5.2-x64\x64\mingw\bin
4、QT项目引入opencv库

这里直接加入opencv.pri文件(可以改名为opencvMinGW.pri),以下是.pri文件的内容:

# 头文件路径
OPENCV_ROOT = $$PWD/opencv/opencvMinGW/OpenCV-MinGW-Build-OpenCV-4.5.2-x64
INCLUDEPATH += $$OPENCV_ROOT/include# 库链接配置(标准-l语法代替绝对路径)
OPENCV_LIB_PATH = $$OPENCV_ROOT/x64/mingw/bin
LIBS += -L$$OPENCV_LIB_PATH \-lopencv_core452 \-lopencv_highgui452 \-lopencv_imgproc452 \-lopencv_calib3d452 \-lopencv_imgcodecs452 \-lopencv_videoio452

然后在.pro文件中引入.pri文件即可

include(D:\opencv\opencv.pri)
5、测试代码

与MSVC的测试代码完全一样。

篇尾

        之前分享的动态库编译文章中,有说明过不同qt版本编译出来的so、dll不能通用(相同的编译器也不行),何况是编译器不一样的时候,所以QT项目(MinGW编译器)引入opencv,要么重新编译,要么使用接口中间件。

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

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

相关文章

字节跳动Coze Studio开源了!架构解析

Coze Studio 是字节跳动推出的一款 AI 应用开发平台&#xff0c;专注于帮助开发者快速构建、测试和部署基于大语言模型的智能应用。其整体架构围绕“低代码开发 AI 应用”的核心目标设计&#xff0c;融合了模型能力、工具集成、流程编排和多端部署等功能。以下是其整体架构的详…

Claude 4.0 终极编程指南:模型对比、API配置与IDE集成实战

Claude 4.0 终极编程指南&#xff1a;模型对比、API配置与IDE集成实战 基于官方文档及可验证数据源&#xff08;2025年7月更新&#xff09; 1 Claude 4.0 技术解析&#xff1a;对比竞品的核心优势与局限 1.1 官方性能数据&#xff08;来源&#xff1a;Anthropic技术白皮书&…

优化:Toc小程序猜你喜欢功能

引言&#xff1a;来自自创的小程序中热点接口&#xff0c;本小程序专为在校学生自提点餐使用 一、功能描述 该功能作为一个推荐的职责&#xff0c;根据用户最近行为给用户推荐用户可能喜欢去吃的店铺&#xff0c;可能比较简洁&#xff0c;但是需要设计的方面挺多的&#xff0c…

Datawhale AI 夏令营:让AI理解列车排期表 Notebook(Baseline拆解)

Step1、读取数据 import pandas as pd import requests import re import json from tqdm import tqdm# 读取数据 data pd.read_excel(data/info_table.xlsx) data data.fillna(无数据) dataStep2、注册硅基流动https://cloud.siliconflow.cnQwen/Qwen3-8B 模型可以免费使用&…

vue写的app设置角标

原生App角标&#xff08;UniApp示例&#xff09;调用plus.runtime.setBadgeNumber方法设置安卓/iOS角标&#xff1a;javascriptCopy Code// 设置角标 plus.runtime.setBadgeNumber(99); // 清除角标&#xff08;部分平台需特殊处理&#xff09; plus.runtime.setBadgeNumber(0)…

GAN/cGAN中到底要不要注入噪声

MelGAN论文MelGAN针对的是从mel谱生成语音&#xff0c;里面说当条件很强的时候&#xff0c;随机噪声就没啥用了&#xff0c;因此没将noise注入到生成器中&#xff1b;运用的判别器也仅有1个输入&#xff0c;不是cGAN的形式image-to-image translation with conditional adversa…

备份一下我的 mac mini 的环境变量配置情况

export PATH“/opt/homebrew/bin:$PATH” #THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!! export SDKMAN_DIR“HOME/.sdkman"[[−s"HOME/.sdkman" [[ -s "HOME/.sdkman"[[−s"HOME/.sdkman/bin/sdkman-init.sh” ]] && so…

JVM学习日记(十)Day10

G1回收器 这一篇是详细说明G1回收器的&#xff0c;因为他相对来说确实是个缝合怪&#xff0c;上篇的内容又太多了所不清楚&#xff0c;所有这一篇进行详细的说明&#xff0c; 第一个呢就是其实G1是兼顾并行和并发的&#xff0c;简单来说就是既可以并行也可以并发&#xff0c;…

使用IP扫描工具排查网络问题

随着企业的发展&#xff0c;网络中会新增各类设备&#xff0c;从台式机、服务器到物联网设备和虚拟机&#xff08;VMs&#xff09;&#xff0c;所有这些设备都通过复杂的子网和虚拟局域网&#xff08;VLAN&#xff09;相连。 这种复杂性给 IT 团队带来了压力&#xff0c;他们需…

Wireshark TS | 发送数据超出接收窗口

前言 来自于测试中无意发现到的一个接收窗口满的案例&#xff0c;特殊&#xff0c;或者可以说我以前都没在实际场景中见过。一开始都没整太明白&#xff0c;花了些精力才算是弄清楚了些&#xff0c;记录分享下。 问题说明 在研究拥塞控制的慢启动阶段时&#xff0c;通过 packet…

C语言自定义数据类型详解(四)——联合体

好的&#xff0c;接下来我们来学习最后一个自定义数据类型——联合体。 一、什么是联合体&#xff1a; 联合体又叫共用体&#xff0c;用关键字union来进行定义。又因为所有的成员变量共用同一段内存空间&#xff08;关于这一点&#xff0c;我们不久就会加以验证&#xff09;&…

[python][flask]Flask-Login 使用详解

1. 简介Flask-Login 是 Flask 的一个扩展&#xff0c;专门用于处理用户认证相关的功能。它提供了用户会话管理、登录/注销视图、记住我功能等常见认证需求&#xff0c;让开发者能够快速实现安全的用户认证系统。2. 安装与基础配置首先&#xff0c;需要安装 Flask-Login&#xf…

【WebGPU学习杂记】WebAssembly中的relaxed_madd指令到底做了什么?

relaxed_madd 这条指令到底做了什么核心&#xff1a;relaxed_madd 是一个分量级别 (Component-wise) 的操作 首先&#xff0c;最重要的一点是&#xff1a;v128.relaxed_madd<f32>(a, b, c) 不是矩阵乘法。它是一个在三个向量 a, b, c 之间进行的、逐个分量的、并行的融合…

【全新上线】境内 Docker 镜像状态监控

境内 Docker 镜像状态监控&#xff1a;您的 Docker 加速伴侣 在当今云计算和容器化技术飞速发展的时代&#xff0c;Docker 已成为开发者不可或缺的工具。然而&#xff0c;对于身处国内的用户而言&#xff0c;访问境外 Docker Hub 等镜像仓库时常会遭遇网络延迟和连接不稳定的困…

Visual Studio中部署PaddleOCRv5 (借助ncnn框架)

PaddleOCRv5_ncnn PaddleOCRv5 在Visual Studio中进行图片OCR检测&#xff08;ncnn框架open-mobile实现)&#xff0c;尝试对nihui的ncnn-android-ppocrv5检测算法的剥离与移植。 本项目Github链接如下&#xff1a;PaddleOCRv5_ncnn 写在前面 本仓库代码是基于nihui的ncnn-a…

中级全栈工程师笔试题

解释ACID特性&#xff0c;如何在node.js中实现事务操作针对React单页应用&#xff0c;请提供至少5种性能优化方案&#xff0c;并解释其原理&#xff1a; 减少首屏加载时间优化渲染性能资源加载策略状态管理优化代码分割方案 如何防止以下攻击&#xff1a; JWT令牌挟持Graph QL查…

Windows---动态链接库Dynamic Link Library(.dll)

DLL的“幕后英雄”角色 在Windows操作系统的生态中&#xff0c;有一类文件始终扮演着“幕后英雄”的角色——它们不像.exe文件那样直接呈现为用户可见的程序窗口&#xff0c;却支撑着几乎所有应用程序的运行&#xff1b;它们不单独执行&#xff0c;却承载着系统与软件的核心功…

深入分析计算机网络传输层和应用层面试题

三、传输层面试题&#xff08;Transmission Layer&#xff09;传输层位于 OSI 七层模型的第四层&#xff0c;它的核心任务是为两个主机之间的应用层提供可靠的数据传输服务。它不仅承担了数据的端到端传输&#xff0c;而且还实现了诸如差错检测、数据流控制、拥塞控制等机制&am…

【RH134 问答题】第 2 章 调度未来任务

目录crontab 文件中的用户作业时间格式怎么解释&#xff1f;如果需要以当前用户身份计划周期性作业&#xff0c;在上午 8 点到晚上 9 点之间每两分钟一次输出当前日期和时间&#xff0c;该作业只能在周一到周五运行&#xff0c;周六或周日不能运行。要怎么做&#xff1f;要计划…

【ee类保研面试】通信类---信息论

25保研er&#xff0c;希望将自己的面试复习分享出来&#xff0c;供大家参考 part0—英语类 part1—通信类 part2—信号类 part3—高数类 part100—self项目准备 文章目录**面试复习总纲****Chap2: 熵、相对熵和互信息 (Entropy, Relative Entropy, and Mutual Information)****…