refactor: update camera control signals and improve live view handling
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
from PySide6.QtCore import QObject, QTimer, Signal, Slot, QMutex, QMutexLocker
|
||||
from PySide6.QtCore import QObject, QTimer, Signal, Slot, QMutex, QMutexLocker, QThread
|
||||
from PySide6.QtGui import QImage, QPixmap
|
||||
import cv2
|
||||
|
||||
@@ -9,6 +9,7 @@ class CameraWorker(QObject):
|
||||
frame_ready = Signal(QPixmap)
|
||||
photo_ready = Signal(QPixmap)
|
||||
error_occurred = Signal(str)
|
||||
camera_ready = Signal(bool)
|
||||
|
||||
def __init__(self, parent: QObject | None = None) -> None:
|
||||
super().__init__(parent)
|
||||
@@ -44,8 +45,10 @@ class CameraWorker(QObject):
|
||||
|
||||
if self.camera.connect():
|
||||
self.is_connected = True
|
||||
self.camera_ready.emit(True)
|
||||
else:
|
||||
self.is_connected = False
|
||||
self.camera_ready.emit(False)
|
||||
self.error_occurred.emit(self.camera.get_error_msg())
|
||||
|
||||
@Slot()
|
||||
@@ -97,15 +100,14 @@ class CameraWorker(QObject):
|
||||
qimg = QImage(rgb_image.data, w, h, ch * w, QImage.Format.Format_RGB888)
|
||||
pixmap = QPixmap.fromImage(qimg)
|
||||
self.frame_ready.emit(pixmap)
|
||||
|
||||
def isConnected(self):
|
||||
return self.is_connected
|
||||
|
||||
|
||||
|
||||
class CameraController(QObject):
|
||||
frame_ready = Signal(QPixmap)
|
||||
photo_ready = Signal(QPixmap)
|
||||
error_occurred = Signal(str)
|
||||
camera_ready = Signal(bool)
|
||||
|
||||
# Signals to command the worker
|
||||
_set_camera_requested = Signal(BaseCamera, int)
|
||||
@@ -125,6 +127,7 @@ class CameraController(QObject):
|
||||
self._worker.frame_ready.connect(self.frame_ready)
|
||||
self._worker.photo_ready.connect(self.photo_ready)
|
||||
self._worker.error_occurred.connect(self.error_occurred)
|
||||
self._worker.camera_ready.connect(self.camera_ready)
|
||||
|
||||
# Connect controller's command signals to worker's slots
|
||||
self._set_camera_requested.connect(self._worker.set_camera)
|
||||
@@ -156,6 +159,4 @@ class CameraController(QObject):
|
||||
|
||||
def stop_stream(self) -> None:
|
||||
self._stop_stream_requested.emit()
|
||||
|
||||
def is_connected(self):
|
||||
return self._worker.isConnected()
|
||||
|
||||
Reference in New Issue
Block a user