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 顯示影像圖片
全站熱搜