@@ -129,7 +129,12 @@ def from_tracked_object(self, tracked_object, objects):
129129 sscape_object .inferRotationFromVelocity ()
130130 break
131131 if not found :
132- sscape_object .setGID (uuid )
132+ # Check if UUID manager already has a mapping for this rv_id
133+ existing_gid = self .uuid_manager .active_ids .get (sscape_object .rv_id , [None ])[0 ]
134+ if existing_gid is None :
135+ sscape_object .setGID (uuid )
136+ else :
137+ sscape_object .setGID (existing_gid )
133138
134139 self .uuid_manager .assignID (sscape_object )
135140
@@ -176,8 +181,12 @@ def trackCategory(self, objects, when, already_tracked_objects):
176181 """Create reliable tracks for objects detected and tracks detected"""
177182 when = datetime .fromtimestamp (when )
178183 self .update_tracks (objects , when )
184+ # Include ALL active C++ tracks to preserve UUID mappings
185+ all_active_tracks = (self .tracker .get_reliable_tracks () +
186+ self .tracker .get_unreliable_tracks () +
187+ self .tracker .get_suspended_tracks ())
179188 tracked_objects = self .tracker .get_reliable_tracks ()
180- self .uuid_manager .pruneInactiveTracks (tracked_objects )
189+ self .uuid_manager .pruneInactiveTracks (all_active_tracks )
181190 tracks_from_detections = [self .from_tracked_object (tracked_object , objects )
182191 for tracked_object in tracked_objects ]
183192
@@ -190,8 +199,12 @@ def trackCategoryBatched(self, objects_per_camera, when, already_tracked_objects
190199 """Create reliable tracks for objects from multiple cameras using batched tracking"""
191200 when = datetime .fromtimestamp (when )
192201 self .update_tracks_batched (objects_per_camera , when )
202+ # Include ALL active C++ tracks to preserve UUID mappings
203+ all_active_tracks = (self .tracker .get_reliable_tracks () +
204+ self .tracker .get_unreliable_tracks () +
205+ self .tracker .get_suspended_tracks ())
193206 tracked_objects = self .tracker .get_reliable_tracks ()
194- self .uuid_manager .pruneInactiveTracks (tracked_objects )
207+ self .uuid_manager .pruneInactiveTracks (all_active_tracks )
195208
196209 # Flatten all objects for from_tracked_object lookup
197210 all_objects = [obj for camera_objects in objects_per_camera for obj in camera_objects ]
0 commit comments