【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
英文地址,請注明出處:http://en.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)****…