Skip to content

CameraBridge

plantimager.controller.camera.CameraBridge Link

CameraBridge Link

CameraBridge(name, address, context, parent=None)

Bases: QObject

Bridge for Picamera to Qt Quick

Properties: name address status statusClass

Source code in plantimager/controller/camera/CameraBridge.py
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
def __init__(self, name: str, address: str, context: zmq.Context, parent: QObject = None):
    super().__init__(parent)
    self._name = name
    self._address = address
    self._video_source = ""
    self._image_source = ""
    self._displayMode = DisplayMode.NORMAL
    if name == "empty" or address == "":
        raise RuntimeError("Empty camera bridge cannot be created.")
    self.statusChanged.connect(lambda state: self.statusClassChanged.emit(STATE_TO_CLASS[state]))

    self.camera = PiCameraComm(context, address)
    self.camera.imageReady.connect(self._newImage)
    self.camera.modeChanged.connect(self._modeChanged)
    self.camera.videoUrlChanged.connect(self._videoUrlChanged)
    self.camera.stateChanged.connect(self.statusChanged)

    self._mode: Literal["VIDEO", "STILL"]  = self.camera.mode
    self._rotation: int = self.camera.rotation
    self.camera.rotationChanged.connect(self._camera_rotation_change_handler)
    self._i = 0

    def _finalizer(camera):
        del camera
        logger.debug(f"bridge {self._name} finalized")
    finalize(self, _finalizer, self.camera)

getImage Link

getImage()

Gets a high-resolution image from the camera

Source code in plantimager/controller/camera/CameraBridge.py
93
94
95
96
97
@Slot()
def getImage(self):
    """Gets a high-resolution image from the camera"""
    if self.camera:
        self.camera.getImage()

getLoresImage Link

getLoresImage()

Gets a low-resolution image from the camera

Source code in plantimager/controller/camera/CameraBridge.py
 99
100
101
102
103
@Slot()
def getLoresImage(self):
    """Gets a low-resolution image from the camera"""
    if self.camera:
        self.camera.getImage(lores=True)

DummyCameraBridge Link

DummyCameraBridge(parent)

Bases: CameraBridge

DummyCameraBridge class serves as a placeholder when no camera is available.

Source code in plantimager/controller/camera/CameraBridge.py
214
215
216
217
218
219
def __init__(self, parent: QObject):
    self._status = CameraStates.INVALID
    self.camera = None
    self._mode = "STILL"
    self._rotation = 0
    self._displayMode = DisplayMode.NORMAL

getImage Link

getImage()

Gets a high-resolution image from the camera

Source code in plantimager/controller/camera/CameraBridge.py
93
94
95
96
97
@Slot()
def getImage(self):
    """Gets a high-resolution image from the camera"""
    if self.camera:
        self.camera.getImage()

getLoresImage Link

getLoresImage()

Gets a low-resolution image from the camera

Source code in plantimager/controller/camera/CameraBridge.py
 99
100
101
102
103
@Slot()
def getLoresImage(self):
    """Gets a low-resolution image from the camera"""
    if self.camera:
        self.camera.getImage(lores=True)