Source code for mesoSPIM.src.WebcamWindow

'''
Simple webcam display widget, can be used stand-alone
author: Nikita Vladimirov, @nvladimus, 2022
License: GPL-3
'''

import numpy as np
import pyqtgraph as pg
import sys

import logging
logger = logging.getLogger(__name__)

from PyQt5 import QtWidgets, QtCore, QtGui
from PyQt5.uic import loadUi
from PyQt5.QtMultimedia import QCameraInfo, QCamera, QCameraViewfinderSettings
from PyQt5.QtMultimediaWidgets import QCameraViewfinder


[docs] class WebcamWindow(QtWidgets.QWidget): sig_state_request = QtCore.pyqtSignal(dict) sig_move_absolute = QtCore.pyqtSignal(dict) def __init__(self, webcam_id=None): super().__init__() #self.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.WEBCAM_ID = webcam_id loadUi('gui/WebcamWindow.ui', self) self.setWindowTitle(f'Webcam view, camera ID {self.WEBCAM_ID}') self.show() if self.WEBCAM_ID is not None: self.start_capture() else: print("Webcam ID is None, cannot start capture")
[docs] def start_capture(self): webcams = QCameraInfo.availableCameras() print(f"Webcams found: {len(webcams)}") if len(webcams) > 0: self.webcam = QCamera(webcams[self.WEBCAM_ID]) self.webcam.setCaptureMode(QCamera.CaptureViewfinder) self.vf_settings = QCameraViewfinderSettings() #self.vf_settings.setResolution(960, 720) self.webcam.setViewfinderSettings(self.vf_settings) self.webcam.setViewfinder(self.viewfinder) #self.viewfinder = QCameraViewfinder() # this object is defined inside the WebcamWindow.ui file self.webcam.start() #print(f"Supported webcam viewfinder resolutions {self.webcam.supportedViewfinderResolutions()}") self.viewfinder.show() else: pass
if __name__ == '__main__': app = QtWidgets.QApplication([]) window = WebcamWindow() sys.exit(app.exec_())