diff --git a/mainEntry.py b/mainEntry.py new file mode 100644 index 0000000..09e133f --- /dev/null +++ b/mainEntry.py @@ -0,0 +1,98 @@ +import os +import sys +import cv2 as cv +import numpy as np + +from PyQt5 import QtCore, QtGui, QtWidgets +from PyQt5.QtCore import * +from PyQt5.QtGui import * +from PyQt5.QtWidgets import QFileDialog, QMainWindow + +from surface import (Ui_MainWindow) +os.chdir(sys.path[0]) + +class PyQtMainEntry(QMainWindow, Ui_MainWindow): + def __init__(self): + super().__init__() + self.setupUi(self) + + self.camera = cv.VideoCapture(0) + self.is_camera_opened = False + + self._timer = QtCore.QTimer(self) + self._timer.timeout.connect(self._queryFrame) + self._timer.setInterval(30) + + def btnOpenCamera_Clicked(self): + + + self.is_camera_opened = ~self.is_camera_opened + if self.is_camera_opened: + self.btnOpenCamera.setText("关闭摄像头") + self._timer.start() + else: + self.btnOpenCamera.setText("打开摄像头") + self._timer.stop() + + def btnCapture_Clicked(self): + + if not self.is_camera_opened: + return + + self.captured = self.frame + + rows, cols, channels = self.captured.shape + bytesPerLine = channels * cols + + QImg = QImage(self.captured.data, cols, rows, bytesPerLine, QImage.Format_RGB888) + self.labelCapture.setPixmap(QPixmap.fromImage(QImg).scaled( + self.labelCapture.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation)) + + def btnReadImage_Clicked(self): + + filename, _ = QFileDialog.getOpenFileName(self, '打开图片') + if filename: + self.captured = cv.imread(str(filename)) + + self.captured = cv.cvtColor(self.captured, cv.COLOR_BGR2RGB) + + rows, cols, channels = self.captured.shape + bytesPerLine = channels * cols + QImg = QImage(self.captured.data, cols, rows, bytesPerLine, QImage.Format_RGB888) + self.labelCapture.setPixmap(QPixmap.fromImage(QImg).scaled( + self.labelCapture.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation)) + + def btnGray_Clicked(self): + + + def btnThreshold_Clicked(self): + + if not hasattr(self, "captured"): + return + + @QtCore.pyqtSlot() + def _queryFrame(self): + + ret, self.frame = self.camera.read() + + img_rows, img_cols, channels = self.frame.shape + bytesPerLine = channels * img_cols + + cv.cvtColor(self.frame, cv.COLOR_BGR2RGB, self.frame) + QImg = QImage(self.frame.data, img_cols, img_rows, bytesPerLine, QImage.Format_RGB888) + self.labelCamera.setPixmap(QPixmap.fromImage(QImg).scaled( + self.labelCamera.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation)) + + + + def btnDenoising_Clicked(self): + if not hasattr(self, "captured"): + return + + + +if __name__ == "__main__": + app = QtWidgets.QApplication(sys.argv) + window = PyQtMainEntry() + window.show() + sys.exit(app.exec_())