def __init__(self, parent=None, standalone=False): super(Camera, self).__init__(parent) # This prevents doing unneeded initialization # when QtDesginer loads the plugin. if parent is None and not standalone: return if not multimedia_available: return self.ui = uic.loadUi(os.path.join(WIDGET_PATH, "camera.ui"), self) self.camera = None self.imageCapture = None self.mediaRecorder = None self.isCapturingImage = False self.applicationExiting = False self.imageSettings = QImageEncoderSettings() self.audioSettings = QAudioEncoderSettings() self.videoSettings = QVideoEncoderSettings() self.videoContainerFormat = '' camera_device = QByteArray() videoDevicesGroup = QActionGroup(self) videoDevicesGroup.setExclusive(True) if not QCamera.availableDevices(): self.ui.devicesCombo.addItem("No Device") else: for deviceName in QCamera.availableDevices(): description = QCamera.deviceDescription(deviceName) self.ui.devicesCombo.addItem(description) videoDeviceAction = QAction(description, videoDevicesGroup) videoDeviceAction.setCheckable(True) videoDeviceAction.setData(deviceName) if camera_device.isEmpty(): cameraDevice = deviceName videoDeviceAction.setChecked(True) self.ui.devicesCombo.addAction(videoDeviceAction) videoDevicesGroup.triggered.connect(self.updateCameraDevice) self.ui.captureWidget.currentChanged.connect(self.updateCaptureMode) self.ui.devicesCombo.currentIndexChanged.connect( self.get_device_action) self.ui.lockButton.hide() # Start camera 2s after the UI has loaded QTimer.singleShot(2000, lambda: self.setCamera(camera_device))
def setup_opencv_camera(self): if len(QCamera.availableDevices()) > 0: camera_addr = str(QCamera.availableDevices()[0]) self.camera = cv2.VideoCapture(0) if self.camera.isOpened(): self.camera.set(cv2.CAP_PROP_BUFFERSIZE, 1) self.camera.set(cv2.CAP_PROP_FRAME_WIDTH, 640) self.camera.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) logger.info('Opened the camera {}'.format(camera_addr)) else: logger.error( 'Failed to open the camera {}'.format(camera_addr))
def __init__(self, parent=None): super(Camera, self).__init__(parent) self.ui = Ui_Camera() self.pre_id = 0 self.cur_id = 0 self.count = 0 self.checked = 0 self.audio_settime = 0 self.allow_flag = 1 self.check_list = [] self.camera = None self.imageCapture = None self.isCapturingImage = False self.applicationExiting = False self.ui.setupUi(self) cameraDevice = QByteArray() videoDevicesGroup = QActionGroup(self) videoDevicesGroup.setExclusive(True) for deviceName in QCamera.availableDevices(): description = QCamera.deviceDescription(deviceName) videoDeviceAction = QAction(description, videoDevicesGroup) videoDeviceAction.setCheckable(True) videoDeviceAction.setData(deviceName) if cameraDevice.isEmpty(): cameraDevice = deviceName videoDeviceAction.setChecked(True) self.ui.menuDevices.addAction(videoDeviceAction) videoDevicesGroup.triggered.connect(self.updateCameraDevice) self.setCamera(cameraDevice) # Create and load model path_pretrained = "apis/models/facenet/20180402-114759.pb" path_SVM = "apis/models/SVM/SVM.pkl" self.recognizer = Recognizer() self.recognizer.create_graph(path_pretrained, path_SVM)
def __fetch_cam(self): for device_obj in QCamera.availableDevices(): cam_name = QCamera.deviceDescription(device_obj) cam = QCamera(device_obj) self.cams[str(cam_name)] = cam cam_image_capture = QCameraImageCapture(cam) cam_image_capture.setEncodingSettings(QImageEncoderSettings()) cam_image_capture.captureDestination() cam_image_capture.imageSaved.connect(self.on_image_saved) self.__cam_image_captures[str(cam_name)] = cam_image_capture cam.statusChanged.connect(self.set_resolution)
def __init__(self, parent=None): super(Camera, self).__init__(parent) global API API = AlgorithmAPIs(template_dir="templates", threshold=0.5, use_multiprocessing=False) self.ui = Ui_Camera() self.camera = None self.imageCapture = None # self.mediaRecorder = None self.isCapturingImage = False self.applicationExiting = False self.imageSettings = QImageEncoderSettings() self.audioSettings = QAudioEncoderSettings() self.ui.setupUi(self) cameraDevice = QByteArray() videoDevicesGroup = QActionGroup(self) videoDevicesGroup.setExclusive(True) for deviceName in QCamera.availableDevices(): description = QCamera.deviceDescription(deviceName) videoDeviceAction = QAction(description, videoDevicesGroup) videoDeviceAction.setCheckable(True) videoDeviceAction.setData(deviceName) if cameraDevice.isEmpty(): cameraDevice = deviceName videoDeviceAction.setChecked(True) self.ui.menuDevices.addAction(videoDeviceAction) videoDevicesGroup.triggered.connect(self.updateCameraDevice) self.ui.lcdNumber_2.display(0) self.ui.dial.valueChanged.connect(self.dial_display) global dial_value dial_value = 3 self.ui.lcdNumber_2.display(dial_value) self.setCamera(cameraDevice) # Create and load model path_pretrained = "apis/models/facenet/20180402-114759.pb" path_SVM = "apis/models/SVM/SVM.pkl" self.recognizer = Recognizer() self.recognizer.create_graph(path_pretrained, path_SVM)
def detectDevices(self): cameraDevice = QByteArray() for name in QCamera.availableDevices(): description = QCamera.deviceDescription(name) deviceAction = QAction(description, self.videoDevicesGroup) deviceAction.setCheckable(True) deviceAction.setData(name) if cameraDevice.isEmpty(): cameraDevice = name deviceAction.setChecked(True) self.menuDevices.addAction(deviceAction) self.videoDevicesGroup.triggered.connect(self.changeCameraDevice) self.setCamera(cameraDevice)
def initUI(self): # ========================= MENÚ =========================== menu = self.menuBar() archivoMenu = menu.addMenu("&Archivo") self.accionIniciarCamara = archivoMenu.addAction( self.style().standardIcon(QStyle.SP_MediaPlay), "Iniciar la camara", self.iniciarCamara) self.accionDetenerCamara = archivoMenu.addAction( self.style().standardIcon(QStyle.SP_MediaStop), "Detener la camara", self.detenerCamara) archivoMenu.addAction( self.style().standardIcon(QStyle.SP_MessageBoxCritical), " Salir", self.close) dispositivosMenu = menu.addMenu("&Dispositivos") videoDevicesGroup = QActionGroup(self) videoDevicesGroup.setExclusive(True) dispositivoCamara = QByteArray() for nombreDispositivo in QCamera.availableDevices(): descripcion = QCamera.deviceDescription(nombreDispositivo) videoDeviceAction = QAction(descripcion, videoDevicesGroup) videoDeviceAction.setCheckable(True) videoDeviceAction.setData(nombreDispositivo) if dispositivoCamara.isEmpty(): dispositivoCamara = nombreDispositivo videoDeviceAction.setChecked(True) dispositivosMenu.addAction(videoDeviceAction) # Instancia del Widget central self.widgets = Widgets(dispositivoCamara, self) # Llamar función cuando se activa una Acción del Menú videoDevicesGroup.triggered.connect( self.widgets.actualizarDispositivoCamara) # Establecer el Widget central de la ventana self.setCentralWidget(self.widgets)
def setup_camera(self): camera_device = QByteArray() for device in QCamera.availableDevices(): if camera_device.isEmpty(): camera_device = device if camera_device.isEmpty(): self.camera = QCamera() else: self.camera = QCamera(camera_device) self.image_capture = QCameraImageCapture(self.camera) self.image_capture.readyForCaptureChanged.connect(self.ready_for_capture) self.image_capture.imageCaptured.connect(self.process_captured_image) self.image_capture.imageSaved.connect(self.image_saved) self.camera.setViewfinder(self.ui.viewFinder) self.camera.start()
def start(self): OutDebugInfo("start") diag = QDialog(self) diag.setWindowTitle("Camera") # main layout diag.lay = QtWidgets.QVBoxLayout() # widgets diag.capture_button = QtWidgets.QPushButton("Capture") diag.capture_button.clicked.connect(self.capture_img) diag.label = QtWidgets.QLabel("") # setting the device diag.device = QCamera.availableDevices()[0] diag.m_camera = QCamera(diag.device) diag.view_finder = QtMultimediaWidgets.QCameraViewfinder() diag.view_finder.setMinimumSize(250, 250) diag.m_camera.setViewfinder(diag.view_finder) diag.m_camera.setCaptureMode(QCamera.CaptureStillImage) try: diag.m_camera.start() self.startcamera = True except: pass diag.lay.addWidget(diag.label) diag.lay.addWidget(diag.view_finder) diag.lay.addWidget(diag.capture_button) diag.lay.addWidget(diag.label) diag.setLayout(diag.lay) diag.cp = QCameraImageCapture(diag.m_camera) diag.cp.imageCaptured.connect(self.capture_img_handler) diag.cp.imageSaved.connect(self.save_img) self.capture_diag = diag diag.show() diag.exec_()
def __init__(self, arg): super(Camera, self).__init__(parent) # self.arg = arg # Attributes variables self.ui = Ui_Camera() self.camera = None self.imageCapture = None self.mediaRecorder = None self.isCapturingImage = False self.applicationExiting = False self.imageSettings = QImageEncoderSettings() self.audioSettings = QAudioEncoderSettings() self.videoSettings = QVideoEncoderSettings() self.videoContainerFormat = '' self.ui.setupUi(self) #get device camera cameraDevice = QByteArray() videoDevicesGroup = QActionGroup(self) videoDevicesGroup.setExclusive(True) # Get informations about available cameras for deviceName in QCamera.availableDevices(): description = QCamera.deviceDescription(deviceName) videoDeviceAction = QAction(description, videoDevicesGroup) videoDeviceAction.setCheckable(True) videoDeviceAction.setData(deviceName) if cameraDevice.isEmpty(): cameraDevice = deviceName videoDeviceAction.setChecked(True) self.ui.menuDevices.addAction(videoDeviceAction) videoDevicesGroup.triggered.connect(self.updateCameraDevice) self.ui.captureWidget.currentChanged.connect(self.updateCaptureMode) self.ui.lockButton.hide() self.setCamera(cameraDevice)
def __init__(self, parent=None): super(Camera, self).__init__(parent) self.ui = Ui_Camera() self.camera = None self.imageCapture = None self.mediaRecorder = None self.isCapturingImage = False self.applicationExiting = False self.imageSettings = QImageEncoderSettings() self.audioSettings = QAudioEncoderSettings() self.videoSettings = QVideoEncoderSettings() self.videoContainerFormat = '' self.ui.setupUi(self) cameraDevice = QByteArray() videoDevicesGroup = QActionGroup(self) videoDevicesGroup.setExclusive(True) #for multiple cameras ata for deviceName in QCamera.availableDevices(): description = QCamera.deviceDescription(deviceName) videoDeviceAction = QAction(description, videoDevicesGroup) videoDeviceAction.setCheckable(True) videoDeviceAction.setData(deviceName) if cameraDevice.isEmpty(): cameraDevice = deviceName videoDeviceAction.setChecked(True) self.ui.menuDevices.addAction(videoDeviceAction) videoDevicesGroup.triggered.connect(self.updateCameraDevice) self.ui.captureWidget.currentChanged.connect(self.updateCaptureMode) self.ui.lockButton.hide() self.setCamera(cameraDevice)
def __init__(self): super().__init__() self.setupUi() cameraDevice = '' videoDevicesGroup = QActionGroup(self) videoDevicesGroup.setExclusive(True) for deviceName in QCamera.availableDevices(): description = QCamera.deviceDescription(deviceName) videoDeviceAction = QAction(description, videoDevicesGroup) videoDeviceAction.setCheckable(True) videoDeviceAction.setData(deviceName) if not cameraDevice: cameraDevice = deviceName videoDeviceAction.setChecked(True) print(7) self.setCamera(cameraDevice) print(8) self.show()
def setup_camera(self): camera_device = QByteArray() video_devices_group = QActionGroup(self) video_devices_group.setExclusive(True) for device in QCamera.availableDevices(): description = QCamera.deviceDescription(device) video_device_action = QAction(description, video_devices_group) video_device_action.setCheckable(True) video_device_action.setData(device) if camera_device.isEmpty(): camera_device = device video_device_action.setChecked(True) self.ui.menuDevices.addAction(video_device_action) if camera_device.isEmpty(): self.camera = QCamera() else: self.camera = QCamera(camera_device) self.camera.setViewfinder(self.ui.cameraViewFinder)
def get_available_camera_names(cls) -> list: return [QCamera.deviceDescription(device_obj) for device_obj in QCamera.availableDevices()]
def __init__(self): super().__init__() self._Client = Biometric_Client( url='https://expasoft.com', port=2133, subscription_key='9fc9474b4bd16b492276eee41763a3cb') self.resize(800, 600) self.setObjectName("FormMain") self.setWindowTitle("БиоСКУД Archivist") self.labelHumans = QtWidgets.QLabel(self) self.labelHumans.setObjectName("labelHumans") self.labelHumans.setText("Профили сотрудников") self.labelHumans.setGeometry(QtCore.QRect(80, 15, 181, 21)) font = QtGui.QFont() font.setPointSize(12) self.labelHumans.setFont(font) self.labelPhotos = QtWidgets.QLabel(self) self.labelPhotos.setObjectName("labelPhotos") self.labelPhotos.setText("Фото сотрудника") self.labelPhotos.setGeometry(QtCore.QRect(390, 15, 181, 21)) font = QtGui.QFont() font.setPointSize(12) self.labelPhotos.setFont(font) self.listViewHumans = QtWidgets.QListWidget(self) self.listViewHumans.setObjectName("listViewHumans") self.listViewHumans.setGeometry(QtCore.QRect(10, 50, 291, 531)) self.listViewHumans.setIconSize(QtCore.QSize(200, 200)) self.listViewHumans.itemClicked.connect(self.LoadProfile) self.listViewPhotos = QtWidgets.QListWidget(self) self.listViewPhotos.setObjectName("listViewPhotos") self.listViewPhotos.setGeometry(QtCore.QRect(310, 50, 291, 281)) self.listViewPhotos.setIconSize(QtCore.QSize(150, 150)) self.labelName = QLabel(self) self.labelName.setText("ФИО:") self.labelName.move(310, 355) self.lineName = QLineEdit(self) self.lineName.resize(140, 25) self.lineName.move(350, 350) self.labelTag = QLabel(self) self.labelTag.setText("Пост:") self.labelTag.move(310, 385) self.lineTag = QLineEdit(self) self.lineTag.resize(140, 25) self.lineTag.move(350, 380) self.pushButtonAddProfile = QtWidgets.QPushButton(self) self.pushButtonAddProfile.setGeometry(QtCore.QRect(310, 420, 181, 51)) self.pushButtonAddProfile.setObjectName("pushButtonAddProfile") self.pushButtonAddProfile.setText("Добавить профиль") self.pushButtonAddProfile.clicked.connect(self.AddProfile) self.pushButtonUpdateProfile = QtWidgets.QPushButton(self) self.pushButtonUpdateProfile.setGeometry( QtCore.QRect(310, 475, 181, 51)) self.pushButtonUpdateProfile.setObjectName("pushButtonAddProfile") self.pushButtonUpdateProfile.setText("Обновить профиль") self.pushButtonUpdateProfile.clicked.connect(self.UpdateProfile) self.pushButtonDelProfile = QtWidgets.QPushButton(self) self.pushButtonDelProfile.setGeometry(QtCore.QRect(310, 530, 181, 51)) self.pushButtonDelProfile.setObjectName("pushButtonDelProfile") self.pushButtonDelProfile.setText("Удалить профиль") self.pushButtonDelProfile.clicked.connect(self.DelProfile) self.CameraStream = QVideoWidget(self) self.CameraStream.setObjectName("videoCameraStream") self.CameraStream.setGeometry(QtCore.QRect(610, 25, 180, 200)) self.device = QCamera.availableDevices()[0] self.camera = QCamera(self.device) self.camera.setViewfinder(self.CameraStream) self.camera.setCaptureMode(QCamera.CaptureStillImage) self.imageCapture = QCameraImageCapture(self.camera) self.imageCapture.imageSaved.connect(self.AddPhotoEnd) self.camera.start() self.pushButtonAddPhoto = QtWidgets.QPushButton(self) self.pushButtonAddPhoto.setObjectName("pushButtonAddPhoto") self.pushButtonAddPhoto.setText("Добавить фото") self.pushButtonAddPhoto.setGeometry(QtCore.QRect(610, 225, 181, 51)) self.pushButtonAddPhoto.clicked.connect(self.AddPhotoBegin) self.pushButtonDelPhoto = QtWidgets.QPushButton(self) self.pushButtonDelPhoto.setObjectName("pushButtonDelPhoto") self.pushButtonDelPhoto.setText("Удалить фото") self.pushButtonDelPhoto.setGeometry(QtCore.QRect(610, 280, 181, 51)) self.pushButtonDelPhoto.clicked.connect(self.DelPhoto) self.LoadProfiles()
from PyQt5.QtMultimedia import QCamera, QCameraInfo for device in QCamera.availableDevices(): ## device 는 QByteArray type print(device.data().decode( )) ## device.data() 는 bytes return, device.data().decode() 는 str return for device in QCameraInfo.availableCameras(): ## device 는 QCameraInfo type print(device.deviceName()) ## device.deviceName() 은 str return print(QCamera.availableDevices()) print(QCameraInfo.availableCameras())
def __init__(self): super().__init__() self._Client = Biometric_Client(url='https://expasoft.com', port=2133, subscription_key='9fc9474b4bd16b492276eee41763a3cb') self.imgName = os.getcwd() + "\img\currentPhoto.jpg" self.imgName0 = os.getcwd() + "\img\currentPhoto0.jpg" self.imgName1 = os.getcwd() + "\img\dbPhoto0.jpg" self.setObjectName("FormMain") self.setWindowTitle("БиоСКУД Watchman") self.resize(1024, 600) self.groupBoxCamera = QtWidgets.QGroupBox(self) self.groupBoxCamera.setObjectName("groupBoxCamera") self.groupBoxCamera.setTitle("") self.groupBoxCamera.setGeometry(QtCore.QRect(10, 10, 500, 371)) self.labelCameraTitle = QtWidgets.QLabel(self.groupBoxCamera) self.labelCameraTitle.setObjectName("labelCameraTitle") self.labelCameraTitle.setText("Изображение с камеры") self.labelCameraTitle.setGeometry(QtCore.QRect(160, 10, 181, 21)) font = QtGui.QFont() font.setPointSize(12) self.labelCameraTitle.setFont(font) self.CameraStream = QVideoWidget(self) self.CameraStream.setObjectName("videoCameraStream") self.CameraStream.setGeometry(QtCore.QRect(10, 50, 481, 261)) self.CameraStream.setMinimumSize(QtCore.QSize(241, 0)) self.pushButtonRecognition = QtWidgets.QPushButton(self.groupBoxCamera) self.pushButtonRecognition.setObjectName("pushButtonRecognition") self.pushButtonRecognition.setText("Распознать") self.pushButtonRecognition.setGeometry(QtCore.QRect(10, 310, 481, 51)) self.pushButtonRecognition.clicked.connect(self.identifyPersonBegin) self.pushButtonLog = QtWidgets.QPushButton(self) self.pushButtonLog.setObjectName("pushButtonLog") self.pushButtonLog.setText("Журнал") self.pushButtonLog.setGeometry(QtCore.QRect(10, 460, 121, 61)) self.pushButtonLog.clicked.connect(self.OpenLogFile) self.pushButtonDb = QtWidgets.QPushButton(self) self.pushButtonDb.setObjectName("pushButtonDb") self.pushButtonDb.setText("База данных") self.pushButtonDb.setGeometry(QtCore.QRect(10, 390, 121, 61)) self.pushButtonDb.clicked.connect(self.OpenArchivist) self.groupBoxRecognition = QtWidgets.QGroupBox(self) self.groupBoxRecognition.setObjectName("groupBoxRecognition") self.groupBoxRecognition.setTitle("") self.groupBoxRecognition.setGeometry(QtCore.QRect(520, 10, 500, 581)) self.pushButtonExit = QtWidgets.QPushButton(self) self.pushButtonExit.setObjectName("pushButtonExit") self.pushButtonExit.setText("Выйти") self.pushButtonExit.setGeometry(QtCore.QRect(10, 530, 121, 61)) self.pushButtonExit.clicked.connect(self.ExitProgream) self.labelPersonName = QtWidgets.QLabel(self.groupBoxRecognition) self.labelPersonName.setObjectName("labelPersonName") self.labelPersonName.setText("") self.labelPersonName.setGeometry(QtCore.QRect(20, 320, 271, 31)) font = QtGui.QFont() font.setPointSize(16) self.labelPersonName.setFont(font) self.labelCurrentPhoto = QtWidgets.QLabel(self.groupBoxRecognition) self.labelCurrentPhoto.setObjectName("labelCurrentPhoto") self.labelCurrentPhoto.setText("") self.labelCurrentPhoto.setGeometry(QtCore.QRect(10, 40, 241, 261)) self.labelCurrentPhoto.setMinimumSize(QtCore.QSize(241, 0)) self.labelCurrentPhoto.setAlignment(QtCore.Qt.AlignCenter) self.labelPersonJob = QtWidgets.QLabel(self.groupBoxRecognition) self.labelPersonJob.setObjectName("labelPersonJob") self.labelPersonJob.setText("") self.labelPersonJob.setGeometry(QtCore.QRect(20, 360, 171, 21)) font = QtGui.QFont() font.setPointSize(12) self.labelPersonJob.setFont(font) self.labelPersonInf = QtWidgets.QLabel(self.groupBoxRecognition) self.labelPersonInf.setObjectName("labelPersonJob") self.labelPersonInf.setText("") self.labelPersonInf.setGeometry(QtCore.QRect(20, 400, 171, 21)) font = QtGui.QFont() font.setPointSize(8) self.labelPersonInf.setFont(font) self.labelAccess = QtWidgets.QLabel(self.groupBoxRecognition) self.labelAccess.setObjectName("labelAccess") self.labelAccess.setText("<html><head/><body><p align=\"center\">Допущен</p></body></html>") self.labelAccess.setGeometry(QtCore.QRect(10, 490, 481, 81)) palette = QtGui.QPalette() brush = QtGui.QBrush(QtGui.QColor(76, 197, 32)) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush) self.labelAccess.setPalette(palette) font = QtGui.QFont() font.setPointSize(16) font.setBold(True) font.setWeight(75) self.labelAccess.setFont(font) self.labelAccess.setAcceptDrops(False) self.labelAccess.setAutoFillBackground(True) self.labelAccess.setFrameShape(QtWidgets.QFrame.NoFrame) self.labelAccess.setFrameShadow(QtWidgets.QFrame.Plain) self.labelAccess.setTextFormat(QtCore.Qt.AutoText) self.labelAccess.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse) self.labelDbPhoto = QtWidgets.QLabel(self.groupBoxRecognition) self.labelDbPhoto.setObjectName("labelDbPhoto") self.labelDbPhoto.setText("") self.labelDbPhoto.setGeometry(QtCore.QRect(250, 40, 241, 261)) self.labelDbPhoto.setMinimumSize(QtCore.QSize(241, 0)) self.labelDbPhoto.setAlignment(QtCore.Qt.AlignCenter) self.labelCurrentPhotoTitle = QtWidgets.QLabel(self.groupBoxRecognition) self.labelCurrentPhotoTitle.setObjectName("labelCurrentPhotoTitle") self.labelCurrentPhotoTitle.setText("Текущее фото") self.labelCurrentPhotoTitle.setGeometry(QtCore.QRect(80, 10, 111, 21)) font = QtGui.QFont() font.setPointSize(12) self.labelCurrentPhotoTitle.setFont(font) self.labelDbPhotoTitle = QtWidgets.QLabel(self.groupBoxRecognition) self.labelDbPhotoTitle.setObjectName("labelDbPhotoTitle") self.labelDbPhotoTitle.setText("Фото в базе") self.labelDbPhotoTitle.setGeometry(QtCore.QRect(320, 10, 111, 21)) font = QtGui.QFont() font.setPointSize(12) self.labelDbPhotoTitle.setFont(font) self.device = QCamera.availableDevices()[0] self.camera = QCamera(self.device) self.camera.setViewfinder(self.CameraStream) self.camera.setCaptureMode(QCamera.CaptureStillImage) self.imageCapture=QCameraImageCapture(self.camera) self.imageCapture.imageSaved.connect(self.identifyPersonEnd) self.camera.start()
from PyQt5.QtMultimedia import QCamera, QCameraInfo info = QCameraInfo.availableCameras() infos = QCamera.availableDevices() print(info) print(infos)