main.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import os
  2. import sys
  3. from PyQt5.QtCore import pyqtSlot
  4. from PyQt5.QtCore import QThread
  5. from PyQt5.QtGui import QImage
  6. from PyQt5.QtGui import QPixmap
  7. from PyQt5.QtWidgets import QApplication
  8. from PyQt5.QtWidgets import QMainWindow
  9. from PyQt5.uic import loadUi
  10. from .camera import CameraDevice
  11. THIS_DIR = os.path.dirname(os.path.abspath(__file__))
  12. class MainWindow(QMainWindow):
  13. def __init__(self):
  14. super().__init__()
  15. self.ui = loadUi(os.path.join(THIS_DIR, 'mainwindow.ui'), self)
  16. self.thread = QThread()
  17. try:
  18. self.camera = CameraDevice()
  19. except ValueError:
  20. self.ui.video.setText("Device not found!\n\nIs FFMPEG available?")
  21. else:
  22. self.camera.frame_ready.connect(self.update_video_label)
  23. self.ui.video.setMinimumSize(*self.camera.size)
  24. self.camera.moveToThread(self.thread)
  25. @pyqtSlot(QImage)
  26. def update_video_label(self, image):
  27. pixmap = QPixmap.fromImage(image)
  28. self.ui.video.setPixmap(pixmap)
  29. self.ui.video.update()
  30. def main():
  31. app = QApplication(sys.argv)
  32. main_window = MainWindow()
  33. main_window.show()
  34. sys.exit(app.exec_())