<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
PyQt是Python語言環境的GUI程式設計解決方案之一,另外還有PyGTK、wxPython等也較為常用。PyQt作為Qt語言的Python擴充套件,可以用來方便快速的開發介面應用。
PyQt5中的QtGui.QImage圖片顯示
import os.path as osp import cv2 from qtpy import QtCore from qtpy import QtWidgets from qtpy import QtGui # TracelessLe注:程式碼範例,不可直接執行 class MainWindow(QtWidgets.QMainWindow): def __init__(self): self.image = QtWidgets.QLabel() def show_img(self, img_path): self.image.clear() img_np = cv2.imread(img_path) width = img_np.shape[1] height = img_np.shape[0] img_rgb_data = cv2.cvtColor(img_np, cv2.COLOR_BGR2RGB) # label_data = QtGui.QImage(img_rgb_data.data, width, height, QtGui.QImage.Format_RGB888) # 這種方式可能會有部分圖片顯示有問題 label_data = QtGui.QImage(img_rgb_data.data, width, height, width*3, QtGui.QImage.Format_RGB888) # 針對RGB圖顯示的正確方式 self.image.setPixmap(QtGui.QPixmap.fromImage(label_data))
圖片顯示問題分析
如上述程式碼中講到的那樣,針對RGB三通道圖片顯示的正確方法是使用:
label_data = QtGui.QImage(img_rgb_data.data, width, height, width*3, QtGui.QImage.Format_RGB888)
進入QtGui.QImage類,可以看到其支援的圖片資料格式有很多:
從QT官網也能找到支援的影象格式:
而圖片初始化方法也有很多:
從使用方式來看,主要分為三大類:
(1)傳入影象尺寸或長寬,以及影象格式(QImage.Format
)
(2)傳入影象資料,影象尺寸或長寬,以及影象格式
(3)傳入影象路徑,影象格式
通常對於已經使用OpenCV讀取和處理過的圖片,我們會使用方式(2)來初始化。
對於常用的RGB三通道影象,初始化時的影象格式一般設為QtGui.QImage.Format_RGB888
。
而在使用時,正確的使用方式是:
def __init__(self, data: bytes, width: int, height: int, bytesPerLine: int, format: 'QImage.Format')
如果使用
def __init__(self, data: bytes, width: int, height: int, format: 'QImage.Format')
方法初始化,可能會遇到顯示上的一些問題。例如圖片斜偏顯示、圖片黑白條間隔顯示、圖片載入直接崩潰等異常。
對比兩種方法,發現問題在於bytesPerLine: int
引數上。該引數指定了bytes
型輸入資料data
在資料排布上的間隔(bytesPerLine
)。如果未指定,對於某些輸入資料,QtGui.QImage
無法正常推斷出資料排列格式,則會出現上述中的顯示異常問題。
版權說明
本文為原創文章,獨家釋出在blog.csdn.net/TracelessLe。未經個人允許不得轉載。
參考資料
[1] QImage Class | Qt GUI 5.15.8
[2] What is PyQt?
[3] PYQT QTGUI.QIMAGE顯示圖片異常,發生斜偏異常,且黑白顯色_lockhou的部落格-CSDN部落格
[4] QImage.Format
[5] QImage
[6] QImage與cv::Mat轉換; - 時光旅者 - 部落格園
[7] 基於PyQt Canvas Matplotlib圖形繪製_battlestar的部落格-CSDN部落格_figurecanvas
到此這篇關於PyQt5中的QtGui.QImage圖片顯示問題分析的文章就介紹到這了,更多相關PyQt5 QtGui.QImage圖片顯示內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45