From af59742321151f2bd519ec22a524c508a603ea99 Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Tue, 14 Jan 2025 10:50:46 -0600 Subject: [PATCH] ensure all trackers are correctly updated even when there are no detections --- frigate/track/norfair_tracker.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/frigate/track/norfair_tracker.py b/frigate/track/norfair_tracker.py index 071485b9b..6badb0d56 100644 --- a/frigate/track/norfair_tracker.py +++ b/frigate/track/norfair_tracker.py @@ -425,15 +425,29 @@ class NorfairTracker(ObjectTracker): detections, frame_name, frame_time, self.camera_name ) - # Update each tracker with its corresponding detections + # Update all configured trackers all_tracked_objects = [] - for label, label_detections in detections_by_type.items(): + for label in self.trackers: tracker = self.get_tracker(label) tracked_objects = tracker.update( - detections=label_detections, coord_transformations=coord_transformations + detections=detections_by_type.get(label, []), + coord_transformations=coord_transformations, ) all_tracked_objects.extend(tracked_objects) + # Collect detections for objects without specific trackers + default_detections = [] + for label, dets in detections_by_type.items(): + if label not in self.trackers: + default_detections.extend(dets) + + # Update default tracker with untracked detections + mode = "ptz" if self.ptz_metrics.autotracker_enabled else "static" + tracked_objects = self.default_tracker[mode].update( + detections=default_detections, coord_transformations=coord_transformations + ) + all_tracked_objects.extend(tracked_objects) + # update or create new tracks active_ids = [] for t in all_tracked_objects: