diff --git a/scanslicer/controller_detection.py b/scanslicer/controller_detection.py index bc07fc4..9b858e3 100644 --- a/scanslicer/controller_detection.py +++ b/scanslicer/controller_detection.py @@ -11,3 +11,25 @@ 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)