PySide(PyQt)與OpenCV圖像格式的相互轉換

PySide和OpenCV在圖像格式上的區別:

主要表現在圖像數據的存儲方式和使用場景上。以下是一些關鍵區別:

1. 數據結構

PySide:

  • QImage?和?QPixmap?是 PySide 中常用的圖像表示形式。
    • QImage:用于直接訪問圖像的像素數據,適合需要進行圖像處理或分析的場景。
    • QPixmap:專為高效地在屏幕上顯示圖像設計,通常用于繪制操作。

OpenCV:

  • 使用?cv::Mat?作為主要的數據結構來表示圖像。
    • cv::Mat:一個多維矩陣,專門為圖像處理和計算機視覺設計,能夠高效地進行像素操作和矩陣運算。

2. 數據存儲方式

QImage:

  • 支持多種圖像格式(例如?Format_RGB32Format_ARGB32Format_Grayscale8?等)。
  • 內部數據通常以線性內存存儲,可以通過?bits()?方法訪問底層的像素數據。

cv::Mat:

  • 數據以連續內存塊存儲,常見格式包括?CV_8UC3(三通道8位無符號整型,即RGB圖像)、CV_8UC1(單通道8位無符號整型,即灰度圖像)等。
  • 直接訪問和操作矩陣數據十分方便,適用于大量圖像處理算法。

3. 使用場景

QImage/QPixmap:

  • 主要用于GUI應用程序中圖像的顯示和簡單處理。
  • 與Qt框架緊密集成,適合構建圖形界面和進行基本的圖像操作。

cv::Mat:

  • 主要用于圖像處理、計算機視覺和機器學習等領域。
  • 提供豐富的圖像處理函數庫,適合復雜的圖像分析和處理任務。

4. 顏色空間

QImage:

  • 可以使用多種顏色空間,如?Format_RGB32?表示每個像素包含32位數據(RGB + Alpha)。
  • 在不同平臺上的顏色格式和排列可能有所不同。

cv::Mat:

  • 通常使用BGR顏色空間(而不是常見的RGB),這是OpenCV的默認顏色格式。
  • 顏色空間轉換非常靈活,通過?cv2.cvtColor?函數可以方便地進行顏色空間轉換。

格式轉換?

1. OpenCV轉PySide:

def CV2QT(CV_image):"""轉換 OpenCV cv::Mat 到 QImage"""img_rgb = cv2.cvtColor(CV_image, cv2.COLOR_BGR2RGB)  # 轉換 BGR 到 RGB# 轉換圖像到QT的QImage格式img_height, img_width, channels = img_rgb.shape  # 獲取形狀bytes_per_line = channels * img_width  # 每行字節數q_img = QImage(img_rgb.data, img_width, img_height, bytes_per_line, QImage.Format_RGB888)  # 轉換成QImage格式pixmap = QPixmap.fromImage(q_img)  # 轉換成QPixmap格式return pixmap

2. PySide轉OpenCV:

def QT2CV(QT_image):"""轉換 QImage 到 OpenCV cv::Mat"""QT_image = QT_image.convertToFormat(QImage.Format.Format_RGB32)width = QT_image.width()height = QT_image.height()ptr = QT_image.bits()arr = np.array(ptr).reshape(height, width, 4)  # 復制數據# 轉換 RGB32 到 RGBreturn cv2.cvtColor(arr, cv2.COLOR_BGRA2BGR)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/38441.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/38441.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/38441.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++ | Leetcode C++題解之第207題課程表

題目&#xff1a; 題解&#xff1a; class Solution { private:vector<vector<int>> edges;vector<int> indeg;public:bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {edges.resize(numCourses);indeg.resize(numCo…

MyBatis(15)MyBatis 的延遲加載是如何實現

MyBatis 的延遲加載&#xff08;懶加載&#xff09;特性允許在需要使用關聯對象數據時才進行加載&#xff0c;而不是在執行主查詢時就加載所有相關數據。這種機制可以提高應用程序的性能&#xff0c;特別是當關聯數據龐大或關聯層次較深時。我們將通過以下幾個方面來深入了解My…

昇思25天學習打卡營第13天|MindNLP ChatGLM-6B StreamChat

學AI還能贏獎品&#xff1f;每天30分鐘&#xff0c;25天打通AI任督二脈 (qq.com) MindNLP ChatGLM-6B StreamChat 本案例基于MindNLP和ChatGLM-6B實現一個聊天應用。 1 環境配置 %%capture captured_output # 實驗環境已經預裝了mindspore2.2.14&#xff0c;如需更換mindspo…

[知識點篇]《計算機組成原理》之數據信息的表示

1、數據表示的作用 &#xff08;1&#xff09;定義&#xff1a;將數據按照某種方式組織&#xff0c;以便機器硬件能直接識別和使用。現代計算機采用二進制進行數據表示。 &#xff08;2&#xff09;數據表示考慮因素&#xff1a; 數據的類型&#xff1a; 數值/非數值、小數、…

讀AI新生:破解人機共存密碼筆記17不確定性和概率

1. 前向搜索 1.1. 通過前向搜索&#xff0c;通過考慮各種可能的動作序列的結果&#xff0c;來選擇動作&#xff0c;是智能系統的基本能力 1.2. 如果一家卡車運輸公司想要優化其100輛卡車在美國的運輸&#xff0c;那么該公司可能需要考慮的狀態數量將是10^700個 1.3. 幾乎所有…

Linux之masscan工具安裝和使用

一、masscan簡介 Masscan是一款快速、高效且開源的端口掃描工具,被廣泛用于網絡安全領域。它的設計目標是實現極高的掃描速度,使其能夠在極短的時間內掃描整個互聯網的IPv4地址空間。以下是masscan的主要特性和功能: 極高的掃描速度:Masscan的設計目標是快速和靈活,它能夠…

網絡爬蟲的特點

網絡爬蟲的特點 網絡爬蟲的特點在于其高度的自動化、靈活性和可擴展性。這些特點使得網絡爬蟲在互聯網信息的獲取、處理和分析中發揮著舉足輕重的作用。 首先&#xff0c;網絡爬蟲的高度自動化是其最為顯著的特點之一。一旦設置好爬取的目標和規則&#xff0c;爬蟲便可以自動…

vue3記個坑關于router的特點

我的問題有一下幾點 1. router-view 在使用name進行命名 這個命名&#xff0c;我再三確定沒有命名錯誤的情況下。我的組件死活出不來。仔細排查了之后&#xff0c;也反復看了官方文檔。終于發現 <router-view name"login"></router-view>這個是路由上的…

數據賦能(134)——開發:數據轉換——技術方法、主要工具

數據類型轉換&#xff1a; 數據類型轉換包括自動類型轉換、強制類型轉換和包裝類轉換。自動類型轉換發生在兩種類型兼容且目標類型大于源類型時&#xff0c;如將整數轉換為浮點數。強制類型轉換則需要將范圍大的數據類型轉換為范圍小的數據類型&#xff0c;如將浮點數轉換為整數…

el-form表單中的el-upload的文件表單驗證

el-form表單中的el-upload的文件表單驗證 常規el-form中的表單驗證&#xff1a; el-form的el-form-item中&#xff1a; <el-form :model"ruleForm" :rules"rules" ref"ruleForm" label-width"100px" class"demo-ruleForm"…

uni-app的來龍去脈,技術要點及技術難點,語法結構及應用場景,其實前端也很難,頂級的前端比后端都重要,感覺第一,理性第二

Uni-App 的來龍去脈 Uni-App 是由 DCloud 推出的一款跨平臺前端框架&#xff0c;用于開發一次性代碼并可以同時在 iOS、Android、H5、微信小程序、支付寶小程序、百度小程序、字節跳動小程序和 QQ 小程序等多個平臺上運行的應用。Uni-App 的出現應對了移動互聯網時代多平臺應用…

解決Install/Remove of the Service Denied報錯

1、問題概述&#xff1f; 在Windows系統中安裝MySQL5.7.43的時候&#xff0c;運行mysqld install命令提示報錯&#xff1a;Install/Remove of the Service Denied 意思是&#xff1a;安裝/刪除服務被拒絕 問題原因所在&#xff1a;就是你當前的權限不夠&#xff0c;以管理員…

Linux【環境 CenOS7】部分軟件安裝鏈接整理

優質博文&#xff1a;IT-BLOG-CN 一、開啟網絡 【問題】&#xff1a; 剛安裝完CentOS&#xff0c;當ping www.baidu.com時&#xff0c;ping不通&#xff1b; 【解決】&#xff1a; 進入cd /etc/sysconfig/network-scripts/我這里修改的是ifcfg-ens33文件&#xff0c;將ONBOOT…

p2p、分布式,區塊鏈筆記:試用ZeroTier組網

ZeroTier 是一種用于創建和管理虛擬局域網&#xff08;Virtual Local Area Network&#xff0c;VLAN&#xff09;的軟件定義網絡&#xff08;SDN&#xff09;解決方案。它可以通過互聯網將多個設備安全地連接在一起&#xff0c;就像它們在同一個本地網絡上一樣。主要開發語言為…

hadoop 3.X 分布式HA集成Kerbos(保姆級教程)

前提&#xff1a;先安裝Kerbos 1、創建keytab目錄 在每臺機器上上提前創建好對應的kertab目錄 [hadooptv3-hadoop-01 ~]$ sudo mkdir -p /BigData/run/hadoop/keytab/ [hadooptv3-hadoop-01 ~]$ sudo mkdir -p /opt/security/ [hadooptv3-hadoop-01 ~]$ sudo chown hadoop:had…

【Python從入門到進階】59、Pandas庫中Series對象的操作(二)

接上篇《58、Pandas庫中Series對象的操作(一)》 上一篇我們講解了Pandas庫中Series對象的基本概念、對象創建和操作&#xff0c;本篇我們來繼續學習Series對象的運算、函數應用、時間序列操作&#xff0c;以及Series的案例實踐。 一、Series對象的運算 1. 數值型數據的算術運…

1、音視頻解封裝流程---解復用

對于一個視頻文件(mp4格式/flv格式)&#xff0c;audio_pkt或者video_pkt是其最基本的數據單元&#xff0c;即視頻文件是由獨立的視頻編碼包或者音頻編碼包組成的。 解復用就是從視頻文件中把視頻包/音頻包單獨讀取出來保存成獨立文件&#xff0c;那么如何得知packet是視頻包還是…

指針賦值與引用傳遞:C語言的基礎知識與實踐技巧

指針賦值與引用傳遞&#xff1a;C語言的基礎知識與實踐技巧 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; **1. **引言 在C語言中&#xff0c;指針是一種強…

Vue CLI VS Vite

Vue CLI與Vite區別&#xff1a; Vue CLI與Vite之間存在明顯的區別&#xff0c;這些區別主要體現在實現原理、優化策略、開發環境速度、構建速度、依賴關系分析和插件系統等方面。以下是關于Vue CLI和Vite區別的詳細分析&#xff1a; 實現原理&#xff1a; Vue CLI&#xff1a…

【Spring Boot】Spring Boot簡介

1、概述 Spring Boot是一個用于創建獨立、生產級別的基于Spring的應用程序的開發框架。旨在簡化Spring應用的初始搭建和開發過程。它通過自動配置和大量默認配置&#xff0c;使得開發者能夠快速搭建一個獨立的Spring應用&#xff0c;無需進行大量的手動配置。 2、主要特點 快…