import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QTextBrowser, QWidget, QLabel, QPushButton, QFileDialog from PyQt5.QtGui import QImage, QPixmap from PyQt5.QtCore import QTimer, Qt import cv2 class CameraWindow(QMainWindow): def __init__(self): super().__init__() self.cap = cv2.VideoCapture(0) # 默认摄像头 self.timer = QTimer() self.initUI() self.timer.timeout.connect(self.update_frame) def initUI(self): self.setGeometry(100, 100, 640, 480) self.setWindowTitle('Camera Feed') self.show() self.timer.start(20) def update_frame(self): ret, frame = self.cap.read() if ret: height, width, _ = frame.shape bytes_per_line = 3 * width cv2_img = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) qt_img = QImage(cv2_img.data, width, height, bytes_per_line, QImage.Format_RGB888) qt_img = qt_img.scaled(self.width(), self.height(), Qt.KeepAspectRatio) self.setCentralWidget(QLabel(self)) self.centralWidget().setPixmap(QPixmap.fromImage(qt_img)) if __name__ == '__main__': app = QApplication(sys.argv) window = CameraWindow() sys.exit(app.exec_())