最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于PyQt5中QtGui.QImage圖片顯示問題解析

 更新時(shí)間:2022年03月08日 10:04:03   作者:TracelessLe  
PyQt作為Qt語言的Python擴(kuò)展,可以用來方便快速的開發(fā)界面應(yīng)用,本文重點(diǎn)給大家介紹PyQt5中的QtGui.QImage圖片顯示問題分析,需要的朋友可以參考下

前言

PyQt是Python語言環(huán)境的GUI編程解決方案之一,另外還有PyGTK、wxPython等也較為常用。PyQt作為Qt語言的Python擴(kuò)展,可以用來方便快速的開發(fā)界面應(yīng)用。

PyQt5中的QtGui.QImage圖片顯示

import os.path as osp
import cv2
from qtpy import QtCore
from qtpy import QtWidgets
from qtpy import QtGui


# TracelessLe注:代碼示例,不可直接執(zhí)行

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)  # 這種方式可能會(huì)有部分圖片顯示有問題
        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) 

進(jìn)入QtGui.QImage類,可以看到其支持的圖片數(shù)據(jù)格式有很多:

從QT官網(wǎng)也能找到支持的圖像格式:

而圖片初始化方法也有很多:

從使用方式來看,主要分為三大類:
(1)傳入圖像尺寸或長寬,以及圖像格式(QImage.Format
(2)傳入圖像數(shù)據(jù),圖像尺寸或長寬,以及圖像格式
(3)傳入圖像路徑,圖像格式

通常對于已經(jīng)使用OpenCV讀取和處理過的圖片,我們會(huì)使用方式(2)來初始化。

對于常用的RGB三通道圖像,初始化時(shí)的圖像格式一般設(shè)為QtGui.QImage.Format_RGB888。

而在使用時(shí),正確的使用方式是:

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')

方法初始化,可能會(huì)遇到顯示上的一些問題。例如圖片斜偏顯示、圖片黑白條間隔顯示、圖片加載直接崩潰等異常。

對比兩種方法,發(fā)現(xiàn)問題在于bytesPerLine: int參數(shù)上。該參數(shù)指定了bytes型輸入數(shù)據(jù)data在數(shù)據(jù)排布上的間隔(bytesPerLine)。如果未指定,對于某些輸入數(shù)據(jù),QtGui.QImage無法正常推斷出數(shù)據(jù)排列格式,則會(huì)出現(xiàn)上述中的顯示異常問題。

版權(quán)說明

本文為原創(chuàng)文章,獨(dú)家發(fā)布在blog.csdn.net/TracelessLe。未經(jīng)個(gè)人允許不得轉(zhuǎn)載。

參考資料

[1] QImage Class | Qt GUI 5.15.8
[2] What is PyQt?
[3] PYQT QTGUI.QIMAGE顯示圖片異常,發(fā)生斜偏異常,且黑白顯色_lockhou的博客-CSDN博客
[4] QImage.Format
[5] QImage
[6] QImage與cv::Mat轉(zhuǎn)換; - 時(shí)光旅者 - 博客園
[7] 基于PyQt Canvas Matplotlib圖形繪制_battlestar的博客-CSDN博客_figurecanvas

到此這篇關(guān)于PyQt5中的QtGui.QImage圖片顯示問題分析的文章就介紹到這了,更多相關(guān)PyQt5 QtGui.QImage圖片顯示內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 教你使用python畫一朵花送女朋友

    教你使用python畫一朵花送女朋友

    這篇文章主要為大家講解如何使用python畫一朵花,送女朋友,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • PyCharm鼠標(biāo)右鍵不顯示Run unittest的解決方法

    PyCharm鼠標(biāo)右鍵不顯示Run unittest的解決方法

    今天小編就為大家分享一篇PyCharm鼠標(biāo)右鍵不顯示Run unittest的解決方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Django中reverse反轉(zhuǎn)并且傳遞參數(shù)的方法

    Django中reverse反轉(zhuǎn)并且傳遞參數(shù)的方法

    今天小編就為大家分享一篇Django中reverse反轉(zhuǎn)并且傳遞參數(shù)的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python Pandas工具繪制數(shù)據(jù)圖使用教程

    Python Pandas工具繪制數(shù)據(jù)圖使用教程

    Pandas是基于NumPy 的一種工具,該工具是為解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。Pandas還可以繪制多重?cái)?shù)據(jù)圖表,本文將為大家介紹如何通過Pandas繪制圖表,感興趣的可以了解一下
    2021-12-12
  • python之value_counts()的具體使用

    python之value_counts()的具體使用

    value_counts()?是一個(gè)用于統(tǒng)計(jì)某列中各個(gè)值的出現(xiàn)次數(shù)的函數(shù),本文主要介紹了python之value_counts()的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • python使用隱式循環(huán)快速求和的實(shí)現(xiàn)示例

    python使用隱式循環(huán)快速求和的實(shí)現(xiàn)示例

    這篇文章主要介紹了python使用隱式循環(huán)快速求和的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 利用python代碼寫的12306訂票代碼

    利用python代碼寫的12306訂票代碼

    這篇文章主要介紹了利用python代碼寫的12306訂票代碼,自己寫的python代碼,是非常實(shí)用的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-12-12
  • python unittest實(shí)現(xiàn)api自動(dòng)化測試

    python unittest實(shí)現(xiàn)api自動(dòng)化測試

    這篇文章主要為大家詳細(xì)介紹了python unittest實(shí)現(xiàn)api自動(dòng)化測試的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • PyTorch之torch.randn()如何創(chuàng)建正態(tài)分布隨機(jī)數(shù)

    PyTorch之torch.randn()如何創(chuàng)建正態(tài)分布隨機(jī)數(shù)

    這篇文章主要介紹了PyTorch之torch.randn()如何創(chuàng)建正態(tài)分布隨機(jī)數(shù)問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • jupyter notebook保存文件默認(rèn)路徑更改方法匯總(親測可以)

    jupyter notebook保存文件默認(rèn)路徑更改方法匯總(親測可以)

    安裝Anaconda后,新建文件的默認(rèn)存儲(chǔ)路徑一般在C系統(tǒng)盤,那么路徑是什么呢?如何更改jupyter notebook保存文件默認(rèn)路徑呢?今天小編就這一問題通過兩種方法給大家講解,需要的朋友跟隨小編一起看看吧
    2021-06-06

最新評論

聂荣县| 且末县| 界首市| 黄山市| 饶平县| 甘德县| 台中市| 奉贤区| 乌拉特前旗| 新竹市| 香格里拉县| 新平| 新巴尔虎右旗| 英德市| 鄯善县| 桓仁| 冷水江市| 龙里县| 林西县| 巧家县| 阜阳市| 兴仁县| 秦皇岛市| 水城县| 巫山县| 曲周县| 栾川县| 正宁县| 侯马市| 莱芜市| 高州市| 木兰县| 合肥市| 岳西县| 丹江口市| 巴彦淖尔市| 广南县| 礼泉县| 托克逊县| 饶阳县| 辽阳市|