Files
MayoStainHelper/controllers/camera_controller.py
2025-09-18 20:18:50 +02:00

32 lines
1.0 KiB
Python

from PySide6.QtCore import QObject, QThread, Signal
from ..core.base import BaseImageSource, BaseControlSource
class CameraController(QObject):
new_frame = Signal(object)
errorOccurred = Signal(str)
def __init__(self, image_source: BaseImageSource, control_source: BaseControlSource, parent=None):
super().__init__(parent)
self.image_source = image_source
self.control_source = control_source
self.camera_thread = QThread()
self.moveToThread(self.camera_thread)
self.image_source.moveToThread(self.camera_thread)
self.control_source.moveToThread(self.camera_thread)
self.image_source.new_frame.connect(self.new_frame)
self.image_source.errorOccurred.connect(self.errorOccurred)
self.control_source.errorOccurred.connect(self.errorOccurred)
def start(self):
self.camera_thread.start()
self.image_source.start()
def stop(self):
self.image_source.stop()
self.camera_thread.quit()
self.camera_thread.wait()