Пример #1
0
    def selectCamera(self, index):
        pre_index = self.index(self.available_cameras, self.selected_camera)
        if pre_index is index:
            if self.camera.state() == QtMultimedia.QCamera.LoadedState:
                self.camera.start()
            return
        if pre_index is not None:
            self.releaseCamera()
            for imageObject in self.images:
                if "pixmap" not in imageObject:
                    print(
                        "detected unfulfilled capture while switching camera, removing..."
                    )
                    self.images.remove(imageObject)
        self.captureButton.setDisabled(True)
        self.selected_camera = self.available_cameras[index]
        self.camera = QtMultimedia.QCamera(self.selected_camera)
        self.camera.setViewfinder(self.viewfinder)
        self.camera.setCaptureMode(QtMultimedia.QCamera.CaptureStillImage)
        self.camera.statusChanged.connect(
            lambda status: self.enableCaptureButton() if status == QtMultimedia
            .QCamera.ActiveStatus and len(self.images) < 12 else None)
        self.camera.error.connect(
            lambda: self.alert("camera error", self.camera.errorString()))
        self.camera.start()

        self.capture = QtMultimedia.QCameraImageCapture(self.camera)
        self.capture.error.connect(
            lambda i, e, s: self.alert("capture error", s))
        self.capture.imageCaptured.connect(self.imageCaptured)
 def img_capture(self):  # Function for capture image.
     image_capture = QtMultimedia.QCameraImageCapture(self.camera)
     image_capture.setCaptureDestination(  # Modes and Destination.
         QtMultimedia.QCameraImageCapture.CaptureToFile)
     self.camera.setCaptureMode(QtMultimedia.QCamera.CaptureStillImage)
     filename = os.path.dirname(os.path.abspath(__file__))
     camera_path = os.path.join(filename, "camera/captures/")
     image_capture.capture(os.path.normpath(camera_path))
Пример #3
0
 def __init__(self, camera):
     super().__init__()
     self._camera = camera
     self._camera_viewfinder = QtMultimediaWidgets.QCameraViewfinder()
     self._camera.setCaptureMode(QtMultimedia.QCamera.CaptureStillImage)
     self._image_capture = QtMultimedia.QCameraImageCapture(self._camera)
     self._image_capture.setCaptureDestination(
         QtMultimedia.QCameraImageCapture.CaptureToFile)
     self._tag = None
     self._standard_img = None
     self._current_frame = None
     self._current_image_name = None
Пример #4
0
    def captureToggle(self):
        tabs = self.mainWindow.previewTabs
        if tabs.currentWidget() != self.mainWindow.cameraTab:
            tabs.setCurrentWidget(self.mainWindow.waitTab)

            try:
                if self.camera is None:
                    if self.cameraInfo is None:
                        self._showError('No camera selected!')
                        tabs.setCurrentWidget(self.mainWindow.badgePreviewTab)
                        return

                    self.camera = QtMultimedia.QCamera(self.cameraInfo)
                    self.camera.viewfinderSettings().setResolution(640, 480)
                    self.camera.setViewfinder(self.mainWindow.cameraViewFinder)

                    def statusChanged(status):
                        if status == QtMultimedia.QCamera.ActiveStatus:
                            tabs.setCurrentWidget(self.mainWindow.cameraTab)

                    self.camera.statusChanged.connect(statusChanged)

                QtCore.QTimer.singleShot(1, self.camera.start)

            except Exception as exc:
                print(exc)
                self._showError('Failed to initialize camera. :(')
                tabs.setCurrentWidget(self.mainWindow.badgePreviewTab)
                return

        elif tabs.currentWidget() == self.mainWindow.cameraTab:

            def imageSaved(id, filename):
                self.useImage(filename)

            self.imageCapture = QtMultimedia.QCameraImageCapture(self.camera)
            self.imageCapture.imageSaved.connect(imageSaved)
            tmpFile = os.path.abspath(os.path.join('archive', '_capture.jpg'))
            self.imageCapture.capture(tmpFile)
            self.camera.stop()