ScanSlicer/scanslicer/controller_detection.py

43 lines
1.4 KiB
Python
Raw Normal View History

import traceback
import cv2
from PySide6.QtCore import QObject, QRunnable, QThreadPool, Signal
from PySide6.QtGui import QImage
from PySide6.QtWidgets import QMessageBox
# DetectionTaskSignals: class definition for ScanSlicer behavior.
class DetectionTaskSignals(QObject):
status = Signal(str)
finished = Signal(object, object, object)
failed = Signal(str)
# DetectionTask: class definition for ScanSlicer behavior.
class DetectionTask(QRunnable):
# __init__: function definition for ScanSlicer behavior.
def __init__(self, autoslicer):
super().__init__()
self.autoslicer = autoslicer
self.signals = DetectionTaskSignals()
# run: function definition for ScanSlicer behavior.
def run(self):
try:
boxes, filter_preview_image = self.autoslicer.autodetect_slices(
self.signals.status.emit,
preview_filter_output=True,
)
normal_preview_image = cv2.cvtColor(self.autoslicer.image, cv2.COLOR_BGR2RGB)
self.signals.finished.emit(boxes, filter_preview_image, normal_preview_image)
except Exception as exc:
details = f"{exc}\n\n{traceback.format_exc()}"
self.signals.failed.emit(details)
# AutotuneTaskSignals: class definition for ScanSlicer behavior.
class AutotuneTaskSignals(QObject):
status = Signal(str)
finished = Signal(object)
failed = Signal(str)