如何使用OpenCV和PyQt打印亮度
我一直在尝试单击按钮并打印亮度。当我点击按钮时,我看到这个错误消息
选择 | 换行 | 行号
- Process finished with exit code 1
这是我的尝试主.py
选择 | 换行 | 行号
- from PyQt5.QtWidgets import QApplication
- from views import UI_Window
- from models import Camera
- if __name__ == '__main__':
- camera = Camera(0) #0, webcam numarasi
- app = QApplication([])
- start_window = UI_Window(camera)
- start_window.show()
- app.exit(app.exec_())
视图.py
选择 | 换行 | 行号
- from PyQt5.QtCore import QThread, QTimer
- from PyQt5.QtWidgets import QLabel, QWidget, QPushButton, QVBoxLayout, QApplication, QHBoxLayout, QMessageBox, QMainWindow
- from PyQt5.QtGui import QPixmap, QImage
- from models import Camera
- class UI_Window(QWidget):
- def __init__(self, cam_num):
- super().__init__()
- self.cam_num = cam_num
- self.cam_num.open()
- # Create a timer.
- self.timer = QTimer()
- self.timer.timeout.connect(self.nextFrameSlot)
- self.timer.start(1000. / 24)
- layout = QVBoxLayout()
- button_layout = QHBoxLayout()
- btnCamera = QPushButton("Print Brightness")
- btnCamera.clicked.connect(self.print_brightness)
- button_layout.addWidget(btnCamera)
- layout.addLayout(button_layout)
- # Add a label
- self.setLayout(layout)
- def nextFrameSlot(self):
- frame = self.cam_num.read()
- if frame is not None:
- image = QImage(frame, frame.shape[1], frame.shape[0], QImage.Format_RGB888) # The image is stored using a 24-bit RGB format (8-8-8).
- self.pixmap = QPixmap.fromImage(image)
- def print_brightness(self):
- print(Camera.get_brightness())
模型.py
选择 | 换行 | 行号
- import cv2
- class Camera:
- def __init__(self, cam_num):
- self.cap = cv2.VideoCapture(cam_num)
- self.cam_num = cam_num
- def open(self, width=640, height=480, fps=30):
- # vc.set(5, fps) #set FPS
- self.cap.set(3, width)
- self.cap.set(4, height) # set height
- return self.cap.isOpened()
- def read(self):
- rval, frame = self.cap.read()
- frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
- return frame
- def get_brightness(self):
- return self.cap.get(cv2.CAP_PROP_BRIGHTNESS)