fix: stabilize cold display occupancy detection
This commit is contained in:
@@ -10,6 +10,7 @@ from cold_display_guard.vision import (
|
||||
RuntimeVisionSettings,
|
||||
ZoneOccupancyDetector,
|
||||
load_runtime_vision_settings,
|
||||
metrics_indicate_occupied,
|
||||
point_in_polygon,
|
||||
)
|
||||
|
||||
@@ -157,6 +158,7 @@ class VisionTests(unittest.TestCase):
|
||||
|
||||
self.assertEqual(settings.sample_stride_pixels, 4)
|
||||
self.assertEqual(settings.occupancy_mean_delta, 55.0)
|
||||
self.assertEqual(settings.occupancy_absolute_dark_fraction, 0.0)
|
||||
self.assertEqual(settings.occupancy_confirm_frames, 2)
|
||||
self.assertEqual(settings.empty_confirm_frames, 2)
|
||||
self.assertEqual(settings.trash_motion_delta, 18.0)
|
||||
@@ -164,6 +166,25 @@ class VisionTests(unittest.TestCase):
|
||||
self.assertEqual(settings.trash_sustained_motion_frames, 2)
|
||||
self.assertEqual(settings.trash_motion_cooldown_seconds, 3)
|
||||
|
||||
def test_absolute_dark_fraction_can_detect_food_already_present_in_baseline(self) -> None:
|
||||
settings = RuntimeVisionSettings(
|
||||
occupancy_mean_delta=55,
|
||||
occupancy_texture_delta=18,
|
||||
occupancy_dark_fraction=0.06,
|
||||
occupancy_absolute_dark_fraction=0.085,
|
||||
)
|
||||
|
||||
occupied = metrics_indicate_occupied(
|
||||
settings,
|
||||
mean_delta=5.0,
|
||||
texture_delta=0.5,
|
||||
dark_fraction=0.09,
|
||||
baseline_dark_fraction=0.10,
|
||||
bright_fraction=0.0,
|
||||
)
|
||||
|
||||
self.assertTrue(occupied)
|
||||
|
||||
def test_detector_can_seed_previous_baseline_and_occupancy(self) -> None:
|
||||
detector = ZoneOccupancyDetector(
|
||||
[Region("1", ((0.0, 0.0), (1.0, 0.0), (1.0, 1.0), (0.0, 1.0)))],
|
||||
|
||||
Reference in New Issue
Block a user