【pyqt5】 讀取numpy arrray 顯示圖片

目錄

1、GUI界面(QT designer設計)

2、邏輯函數(回調等)

3、顯示圖片在label上

0)直接利用QPixmap顯示圖像

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上

0)直接利用QPixmap顯示圖像

from PyQt5.QtGui import QPixmap

label.setScaledContents(True)  # 設置圖像自適應控件大小
label.setPixmap(QPixmap("***.jpg"))

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

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

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

相關文章

[Django]SE項目回憶錄(二)-注冊/登錄功能的實現及細節

該項目中提供了注冊和登錄兩部分功能&#xff0c;功能描述如下&#xff1a; 注冊&#xff1a; 允許任何用戶進行學生身份的注冊。 教師用戶預先已經保存在數據庫中&#xff0c;不允許以游客身份注冊新的教師用戶。 注冊時需要填寫的信息包括&#xff1a; - 用戶名 - 密碼(…

Zip4j開源jar包的簡單使用

因為對項目突然要發送壓縮加密的郵件附件&#xff0c;所以從網上看了一些資料說Zip4j開源框架比較好使&#xff0c;對中文的支持也比較好&#xff0c;所以從網上找了一個代碼案例&#xff01;自己寫了一寫&#xff0c;現在貼出來&#xff0c;方便以后想用的時候好找 1、 1 pack…

【pyqt5】——入門級模板(ui文件+ui轉py文件+邏輯py文件)(消息提示框)

目錄 1、ui文件 2、ui轉py文件 3、邏輯py文件 4、實例 1&#xff09;ui文件——demo.ui 2&#xff09;ui轉py文件——demo.py 3)邏輯py文件——demoLogic.py 4)運行結果 1、ui文件 這個文件是直接通過pyqt5 designer進行設計的&#xff0c;相關配置可見《配置Qt Design…

PCL中點特征描述子PFH、FPFH和VFH簡述和示例

文章目錄前言一、點特征直方圖1.1 PFH1.1.1 法線估計1.1.2 特征計算1.2 FPFH1.3 VFH二、示例2.1 PFH計算2.2 FPFH2.3 VFH前言 點特征直方圖是PCL中非常重要的特征描述子&#xff0c;在點云匹配、分割、重建等任務中起到關鍵作用&#xff0c;可以對剛體變換、點云密度和噪聲均有…

BZOJ 1005: [HNOI2008]明明的煩惱

BZOJ 1005: [HNOI2008]明明的煩惱 Description 自從明明學了樹的結構,就對奇怪的樹產生了興趣......給出標號為1到N的點,以及某些點最終的度數,允許在 任意兩點間連線,可產生多少棵度數滿足要求的樹? Input 第一行為N(0 < N < 1000), 接下來N行,第i1行給出第i個節點的度…

Apache Directory 指令

<Directory> 指令 語法&#xff1a;<Directory directory-path> ... </Directory> <Directory>和</Directory>用于封裝一組指令&#xff0c;使之僅對某個目錄及其子目錄生效。任何可以在"directory"作用域中使用的指令都可以使用。Dir…

來一個炫酷的導航條

本文分享一個帶動畫效果的中英文切換導航條。 鼠標放上去試一下&#xff1a; INDEX 首頁 BBS 社區 HOME 我 1.用CSS3實現 效果看上去復雜&#xff0c;其實我們先來做出一個樣式&#xff0c;就很簡單了。如下&#xff1a; 代碼&#xff1a; <nav><ul class"list…

基于C++的opencv中Mat矩陣運算方法總結

文章目錄前言一、Mat運算種類1.1 代數運算1.2 類型轉換前言 Mat類是目前opencv最為常用的圖像數據格式&#xff0c;其優點在于無需手動開辟內存空間和實時釋放&#xff0c;針對此類的各種運算方法有很多&#xff0c;本文按照各種運算方法的種類進行簡單的總結和示例。 一、Mat…

【pyqt5】——信號與槽

一、簡單Demo 簡單使用信號和槽&#xff08;之前常用的使用方式&#xff09;&#xff1a; class DemoWin(QMainWindow):def __init__(self):super().__init__()self.initUI()def initUI(self):self.resize(400, 250)self.btn QPushButton("發送信號", self)# 發送…

JSON - 簡介

JSON - 簡介 JSON實例 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>菜鳥教程(runoob.com)</title> </head> <body> <h2>JavaScript 創建 JSON 對象</h2> <p> 網站名稱: <spa…

mysql慢日志管理

一、日志切割 原理&#xff1a; 1、cp一個慢日志備份 2、清空原理的慢日志 3、寫成腳本&#xff0c;每天一切&#xff0c;這樣就ok啦 二、查找日志中的慢日志 1、做了日志切割&#xff08;慢日志文件就小了&#xff09; 2、查找某個時間的慢日志 日志時間格式&#xff1a; # Ti…

【深度學習】mask_rcnn訓練自己的數據集以及模型使用(實踐結合GitHub項目)

根據requirements - 開源項目默認的.txt進行庫安裝 環境&#xff1a;WIN10 Anoconda Pycharm python3.6.2 mask_rcnn基本流程1、訓練 1)labelme進行目標物體標記&#xff0c;生成json文件&#xff0c;含點坐標、以及各個物體的標簽label; json文件的格式&#xff1a;&…

EXCEL小技巧:如何統計非空單元格

http://club.excelhome.net/thread-1187271-1-1.html 下面教大家如果用函數統計非空單元格的數量 首先我們來介紹幾個統計函數&#xff1a; 1.COUNT(value1,value2,...) 統計包含數字的單元格個數 2.COUNTA(value1,value2,...) 統計非空單元格的個數 3.COUNTBLANK(range&…

easyui 頁簽

昨天開始搭后臺框架&#xff0c;到晚上的時候遇到了一個現在覺得挺可笑但是當時一直很糾結很糾結的問題&#xff0c;這個問題剛剛解決出來&#xff0c;把它拿出來說說&#xff0c;讓自己長點兒記性&#xff0c;希望大家不要犯我這個錯誤啊 在backstage.jsp頁面中我寫了一個方法…

未在本地計算機上注冊“Microsoft.Jet.OLEDB.4.0”提供程序。

報錯信息&#xff1a; 解決方案&#xff1a; 1、“設置應用程序池默認屬性”/“常規”/”啟用32位應用程序”&#xff0c;設置為 true。 如下圖所示&#xff1a;&#xff08;已測試&#xff0c;好使&#xff09; 方法二&#xff1a;生成->配置管理器->平臺->點擊Any C…

UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figur

“UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure”在利用mask_rcnn進行物體檢測的時候出現的問題&#xff0c;主要是因為matplotlib的使用格式不對 可以檢查者兩個地方&#xff1a; 1、visualize.py中 import mat…

008. 限制上傳文件的大小

第一種方法: 利用web.config的配置文件項, 進行設置; 前端aspx示例: <% Page Language"C#" AutoEventWireup"true" CodeFile"sendOutEmail.aspx.cs" Inherits"sendOutEmail" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHT…

查詢實例及其代碼

一、 設有一數據庫&#xff0c;包括四個表&#xff1a;學生表&#xff08;Student&#xff09;、課程表&#xff08;Course&#xff09;、成績表&#xff08;Score&#xff09;以及教師信息表&#xff08;Teacher&#xff09;。四個表的結構分別如表1-1的表&#xf…

pyinstaller打包執行exe出現“ModuleNotFoundError: No module named ‘scipy.spatial.transform._rotation_group”

這個是因為打包后的第三方庫中缺少了pyd文件 具體的解決方法&#xff1a; 去環境下找到相應的py文件&#xff0c;根據https://blog.csdn.net/qq_41007606/article/details/109565069文章寫的方法&#xff0c;將py編譯成pyd文件&#xff0c;然后將pyd文件復制到dist相應的第三…

浙江中醫藥大學第十一屆程序設計競賽題解

官方題解&#xff1a;http://www.jnxxhzz.com/Article/article/9.html 2019: 特產 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 548 Solved: 154[Submit][Status][Web Board]Description Input Output 輸出一個整數表示dd帶回來的特產重量 Sample Input 2 3 6 1 3Sample …