close

新增一個main.ui

利用pyuic5將main.ui轉換為main_ui.py

先利用之前寫好的一個樣板,儲存為main.py

main.py內容如下:

import sys
import typing
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import QApplication, QMainWindow
from view.main_ui import *
# from view.secWindow_ui import *

class PyQt_Main(QMainWindow):
    def __init__(self):                  
        QMainWindow.__init__(self)      
        self.ui = Ui_MainWindow()      
        self.ui.setupUi(self)            
        self.setWindowTitle("Load an image")
        # self.ui.pushButton.clicked.connect(lambda: self.openSecWindow())
        self.show()                    
        return

   

def main():
    app = QtWidgets.QApplication(sys.argv)
    main = PyQt_Main()
    sys.exit(app.exec_())      

if __name__ == "__main__":
    main()

按下執行,顯示GUI

在此,先寫一個基本驗證,點選File -> Open 

利用OpenCV開啟一張圖片

因此,註冊一個事件

self.ui.actionOpen.triggereed.connect( .... )

對應的callback函式actionOpenImage(self):

這裡先寫死路徑,並直接用imshow顯示圖像結果

import sys
import typing
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import QApplication, QMainWindow
from view.main_ui import *
import cv2
# from view.secWindow_ui import *

class PyQt_Main(QMainWindow):
    def __init__(self):                  
        QMainWindow.__init__(self)      
        self.ui = Ui_MainWindow()      
        self.ui.setupUi(self)            
        self.setWindowTitle("Load an image")
        self.ui.actionOpen.triggered.connect(lambda: self.actionOpenImage())
        self.show()                    
        return

    def actionOpenImage(self):
        filePath = "D:\OpenCV\images\lena.jpg"
        img = cv2.imread(filePath)
        cv2.imshow("image", img)

 執行結果如下:

詢問chatGPT詢問如何選取一個圖片檔案和對應的路徑

新增引入QFileDialog類別

新增一個open_image_dialog(self)函式

 

from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog
 
    def actionOpenImage(self):
        filePath = self.open_image_dialog()
        # filePath = "D:\OpenCV\images\lena.jpg"
        img = cv2.imread(filePath)
        cv2.imshow("image", img)

    def open_image_dialog(self):
        options = QFileDialog.Options()
       
        filePath, _ = QFileDialog.getOpenFileName(
            self, "Open Image", "", "Image Files (*.png *.jpg *.jpeg *.bmp);;All Files (*)", options=options
        )

        return filePath

 開啟一個對話框,選取一張照片

 

    def actionOpenImage(self):
        filePath = self.open_image_dialog()
        # filePath = "D:\OpenCV\images\lena.jpg"
        img = cv2.imread(filePath)
        # cv2.imshow("image", img)
        # Convert the image to RGB format
        img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
        # Create a QImage from the image data
        height, width, channels = img_rgb.shape
        q_image = QImage(
            img_rgb.data, width, height, channels * width, QImage.Format_RGB888
        )
        # Create a QPixmap from the QImage
        pixmap = QPixmap.fromImage(q_image)
        self.ui.label_image.setPixmap(pixmap)

 讀取一張彩色照片

 讀取一張灰階照片

顯示一張大圖

 

 參考資料

Python OpenCV 使用 PyQt5 顯示影像圖片

 

 

 

 

 

 

 

 

 

arrow
arrow
    全站熱搜

    me1237guy 發表在 痞客邦 留言(0) 人氣()