diff --git a/src/modules/imaging/detector.py b/src/modules/imaging/detector.py index 1f51e62..0767955 100644 --- a/src/modules/imaging/detector.py +++ b/src/modules/imaging/detector.py @@ -86,6 +86,9 @@ def intersection_over_union(self, pred: 'BoundingBox') -> Optional[float]: iou = intersection / self.union(pred) return iou + def __repr__(self) -> str: + return f"pos: {self.position}, size: {self.size}" + class BaseDetector: def predict(self, image: Image.Image) -> Optional[BoundingBox]: diff --git a/test/test_analysis.py b/test/test_analysis.py index 7eceb71..4dafe2c 100644 --- a/test/test_analysis.py +++ b/test/test_analysis.py @@ -15,7 +15,7 @@ from src.modules.imaging.detector import BaseDetector, BoundingBox, Vec2 -class DebugLandingPadDetector(BaseDetector): +class DebugDetector(BaseDetector): def __init__(self, vector: Optional[Vec2] = None, @@ -28,7 +28,7 @@ def predict(self, image: Image.Image) -> Optional[BoundingBox]: def test_analysis_subscriber(): camera = DebugCamera("res/test-image.jpeg") - detector = DebugLandingPadDetector() + detector = DebugDetector() location_provider = DebugLocationProvider() location_provider.set_altitude(1.0) analysis = ImageAnalysisDelegate(detector, camera, location_provider) @@ -36,9 +36,12 @@ def test_analysis_subscriber(): global detected detected = None - def _callback(_image, lon, lat): + def _callback(_image, lon_lat): global detected - detected = Vec2(lon, lat) + + detected = None + if lon_lat: + detected = Vec2(lon_lat[0], lon_lat[1]) analysis.subscribe(_callback) @@ -47,15 +50,16 @@ def _callback(_image, lon, lat): assert detected is None detector.bounding_box = BoundingBox(Vec2(20, 20), Vec2(50, 50)) analysis._analyze_image() - assert (detected - - Vec2(-115.48873916832288, 5.483286467459389e-06)).norm < 0.01 + assert detected is not None + result = detected - Vec2(0.4158184416499504, -0.574961758930409) + assert result.norm < 0.01 class MockImageAnlaysisDebugger(ImageAnalysisDebugger): def __init__(self): - self.image: Optional[Image.Image] = None - self.bounding_box: Optional[BoundingBox] = None + self.image: Image.Image | None = None + self.bounding_box: BoundingBox | None = None self.is_visible = False def show(self): @@ -81,7 +85,7 @@ def set_bounding_box(self, bb: BoundingBox): def test_analysis_debugger(): camera = DebugCamera("res/test-image.jpeg") - detector = DebugLandingPadDetector() + detector = DebugDetector() debug = MockImageAnlaysisDebugger() location_provider = DebugLocationProvider() location_provider.set_altitude(1.0)