日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【pyqt5】 读取numpy arrray 显示图片

發布時間:2023/12/10 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【pyqt5】 读取numpy arrray 显示图片 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

1、GUI界面(QT designer設計)

2、邏輯函數(回調等)

3、顯示圖片在label上

1)顯示彩色圖

彩色圖顯示色調不正常——opencv(BGR)QT(RGB)需要進行轉換

2)顯示灰度圖

4、顯示圖像在graphic views上

實例

參考:


1、GUI界面(QT designer設計)

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'ImshowImgWithMatGUI.ui' # # Created by: PyQt5 UI code generator 5.15.1 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing.from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(800, 600)self.centralwidget = QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName("centralwidget")self.pushButton = QtWidgets.QPushButton(self.centralwidget)self.pushButton.setGeometry(QtCore.QRect(280, 460, 201, 23))self.pushButton.setObjectName("pushButton")self.label = QtWidgets.QLabel(self.centralwidget)self.label.setGeometry(QtCore.QRect(210, 90, 351, 291))self.label.setObjectName("label")MainWindow.setCentralWidget(self.centralwidget)self.menubar = QtWidgets.QMenuBar(MainWindow)self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))self.menubar.setObjectName("menubar")MainWindow.setMenuBar(self.menubar)self.statusbar = QtWidgets.QStatusBar(MainWindow)self.statusbar.setObjectName("statusbar")MainWindow.setStatusBar(self.statusbar)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))self.pushButton.setText(_translate("MainWindow", "通過數組顯示圖片"))self.label.setText(_translate("MainWindow", "TextLabel"))

2、邏輯函數(回調等)

import cv2 as cv from PyQt5.QtGui import QImage,QPixmap from PyQt5.QtWidgets import QApplication, QMainWindow from ImshowImgWithMatGUI import Ui_MainWindow import sysclass My_UI(QMainWindow, Ui_MainWindow):def __init__(self):QMainWindow.__init__(self)Ui_MainWindow.__init__(self)self.setupUi(self)self.setWindowTitle('窗口標題')def pushbuttonthing(self):# 讀取彩色圖片img_src = cv.imread(r"X:\4.jpg",)img_src = cv.cvtColor(img_src,cv.COLOR_BGR2RGB)# 讀取label寬高label_width = self.label.width()label_height = self.label.height()# 將圖片轉換為QImagetemp_imgSrc = QImage(img_src, img_src.shape[1], img_src.shape[0],img_src.shape[1]*3, QImage.Format_RGB888)# 將圖片轉換為QPixmap方便顯示pixmap_imgSrc = QPixmap.fromImage(temp_imgSrc).scaled(label_width, label_height)# 使用label進行顯示self.label.setPixmap(pixmap_imgSrc)def run(self):self.pushButton.clicked.connect(self.pushbuttonthing) if __name__ == '__main__':app = QApplication(sys.argv)# 顯示窗口win = My_UI()win.show()win.run()sys.exit(app.exec_())

3、顯示圖片在label上

1)顯示彩色圖

img_src是通過imread讀取的彩色圖像

QImage.Format_RGB888

# 將圖片轉換為QImagetemp_imgSrc = QImage(img_src, img_src.shape[1], img_src.shape[0],img_src.shape[1]*3, QImage.Format_RGB888)# 將圖片轉換為QPixmap方便顯示pixmap_imgSrc = QPixmap.fromImage(temp_imgSrc).scaled(label_width, label_height)# 使用label進行顯示self.label.setPixmap(pixmap_imgSrc)

彩色圖顯示色調不正常——opencv(BGR)QT(RGB)需要進行轉換

img_src = cv.cvtColor(img_src,cv.COLOR_BGR2RGB)

2)顯示灰度圖

顯示灰度圖像(其中灰度圖像是由彩色直接通過)

QImage.Format_Format_Grayscale8

# 將圖片轉換為QImagetemp_imgSrc = QImage(img_src, img_src.shape[1], img_src.shape[0], QImage.Format_Format_Grayscale8)# 將圖片轉換為QPixmap方便顯示pixmap_imgSrc = QPixmap.fromImage(temp_imgSrc).scaled(label_width, label_height)# 使用label進行顯示self.label.setPixmap(pixmap_imgSrc)

4、顯示圖像在graphic views上

img = cv2.imread("data\\1.jpg") # 讀取圖像img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 轉換圖像通道x = img.shape[1] # 獲取圖像大小y = img.shape[0]self.zoomscale = 1 # 圖片放縮尺度frame = QImage(img, x, y,x*3, QImage.Format_RGB888)pix = QPixmap.fromImage(frame)self.item = QGraphicsPixmapItem(pix) # 創建像素圖元# self.item.setScale(self.zoomscale)self.scene = QGraphicsScene() # 創建場景self.scene.addItem(self.item)self.picshow.setScene(self.scene) # 將場景添加至視圖

實例

GUI界面代碼:

#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/11/15 21:01 # @Author : @linlianqin # @Site : # @File : test2.py # @Software: PyCharm # @description: from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtCore import pyqtSlot from PyQt5.QtWidgets import QMainWindow, QApplication, QGraphicsScene, QGraphicsPixmapItem from PyQt5.QtGui import QImage, QPixmap import cv2class Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(800, 600)self.centralWidget = QtWidgets.QWidget(MainWindow)self.centralWidget.setObjectName("centralWidget")self.horizontalLayout = QtWidgets.QHBoxLayout(self.centralWidget)self.horizontalLayout.setObjectName("horizontalLayout")self.gridLayout = QtWidgets.QGridLayout()self.gridLayout.setObjectName("gridLayout")self.picshow = QtWidgets.QGraphicsView(self.centralWidget)self.picshow.setObjectName("picshow")self.gridLayout.addWidget(self.picshow, 0, 1, 3, 1)self.zoomout = QtWidgets.QPushButton(self.centralWidget)self.zoomout.setObjectName("zoomout")self.gridLayout.addWidget(self.zoomout, 0, 0, 1, 1)self.zoomin = QtWidgets.QPushButton(self.centralWidget)self.zoomin.setObjectName("zoomin")self.gridLayout.addWidget(self.zoomin, 1, 0, 1, 1)self.horizontalLayout.addLayout(self.gridLayout)MainWindow.setCentralWidget(self.centralWidget)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))self.zoomout.setText(_translate("MainWindow", "放大"))self.zoomin.setText(_translate("MainWindow", "縮小"))if __name__ == '__main__':import sysapp = QtWidgets.QApplication(sys.argv)MainWindow = QtWidgets.QMainWindow()ui = Ui_MainWindow()ui.setupUi(MainWindow)MainWindow.show()sys.exit(app.exec_())app.exec_()

邏輯業務代碼

from PyQt5.QtCore import pyqtSlot from PyQt5.QtWidgets import QMainWindow, QApplication, QGraphicsScene, QGraphicsPixmapItem from PyQt5.QtGui import QImage, QPixmap import cv2 from test2 import Ui_MainWindowclass picturezoom(QMainWindow, Ui_MainWindow):"""Class documentation goes here."""def __init__(self, parent=None):"""Constructor@param parent reference to the parent widget@type QWidget"""super(picturezoom, self).__init__(parent)self.setupUi(self)img = cv2.imread("data\\1.jpg") # 讀取圖像img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 轉換圖像通道x = img.shape[1] # 獲取圖像大小y = img.shape[0]self.zoomscale = 1 # 圖片放縮尺度frame = QImage(img, x, y,x*3, QImage.Format_RGB888)pix = QPixmap.fromImage(frame)self.item = QGraphicsPixmapItem(pix) # 創建像素圖元# self.item.setScale(self.zoomscale)self.scene = QGraphicsScene() # 創建場景self.scene.addItem(self.item)self.picshow.setScene(self.scene) # 將場景添加至視圖@pyqtSlot()def on_zoomin_clicked(self):"""點擊縮小圖像"""# TODO: not implemented yetself.zoomscale = self.zoomscale - 0.05if self.zoomscale <= 0:self.zoomscale = 0.2self.item.setScale(self.zoomscale) # 縮小圖像@pyqtSlot()def on_zoomout_clicked(self):"""點擊方法圖像"""# TODO: not implemented yetself.zoomscale = self.zoomscale + 0.05if self.zoomscale >= 1.2:self.zoomscale = 1.2self.item.setScale(self.zoomscale) # 放大圖像def main():import sysapp = QApplication(sys.argv)piczoom = picturezoom()piczoom.show()app.exec_()if __name__ == '__main__':main()

# 圖像自適應顯示

self.graphicsView.fitInView(self.item)?

# 縮放圖像(self.zoomscale<1時縮小,self.zoomscale>1時放大)

self.item.setScale(self.zoomscale)

參考:

http://www.baidu.com/link?url=a8hCYgwP-bV878QR6HYFf936xX8oy2PMykU9JvlZ5Nkfluzl046xMqJ6Q6pvatydTqIP_fhO8g-OBxVhQsgVUkcqLNMgIkiUeg3_Fq_FXl3&wd=&eqid=835fd08a0002ad020000000661925f6bhttp://www.baidu.com/link?url=a8hCYgwP-bV878QR6HYFf936xX8oy2PMykU9JvlZ5Nkfluzl046xMqJ6Q6pvatydTqIP_fhO8g-OBxVhQsgVUkcqLNMgIkiUeg3_Fq_FXl3&wd=&eqid=835fd08a0002ad020000000661925f6bpyqt5 graphics view簡單使用 - 菜芽caiya - 博客園https://www.cnblogs.com/caiya/p/10328010.html

總結

以上是生活随笔為你收集整理的【pyqt5】 读取numpy arrray 显示图片的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。