import cv2 import sys, time, os import numpy as np from PyQt5 import QtCore, QtGui, QtWidgets from test_pyqt5_0712_ui import Ui_MainWindow from PyQt5.QtCore import QDate,QTime from PyQt5.QtWidgets import QApplication, QFileDialog, QLabel,QMainWindow, QWidget, QPushButton from PyQt5.QtCore import QThread, pyqtSignal # 轉Qlabel的格式 def label_to_view(img): # 原圖 img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # QT顏色顯示轉換 Ny, Nx, _ = img.shape img = QtGui.QImage(img.data, Nx, Ny, Nx * 3, QtGui.QImage.Format_RGB888) # 須改格式 return img class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): def __init__(self, parent=None): #按鍵設定 super(MainWindow, self).__init__(parent) self.setupUi(self) self.view_1.setScaledContents(True); #設定view_1 自適應大小 self.open_file_bt.clicked.connect(self.open_file_clicked) # 按鍵open self.horizontalSlider.valueChanged.connect(self.sliderValue) # 滑桿調整 self.img_check=False # 確認有無圖片 # 選擇圖片 def open_file_clicked(self): file_filter = "Image Files (*.jpg *.jpeg *.png *.bmp *.mp4 *.avi);" # 規定格式 file_path, _ = QFileDialog.getOpenFileName(self, 'Open Image','',file_filter) # 若沒圖 直接return 不執行下面程式 if file_path =="": return if file_path: self.img_check = True self.img = cv2.imread(file_path) img = self.img.copy() img = label_to_view(img) self.view_1.setPixmap(QtGui.QPixmap.fromImage(img)) # 滑桿控制 def sliderValue(self): # 若沒圖 直接return 不執行下面程式 if self.img_check==False: return binary_value = int(self.horizontalSlider.value()) # 二值化參數 self.horizontalSlider_text.setText(str(binary_value)) # 顯示數值 img = self.img.copy() img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) if binary_value < 2: return if (binary_value % 2 == 1): img1 = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, binary_value, 2) # 動態二值 else: img1 = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, binary_value + 1, 2) # 動態二值 img1 = cv2.cvtColor(img1, cv2.COLOR_GRAY2BGR) img = label_to_view(img1) self.view_1.setPixmap(QtGui.QPixmap.fromImage(img)) if __name__=='__main__': app = QtWidgets.QApplication(sys.argv) win = MainWindow() win.show() sys.exit(app.exec_())