From 20d71cc04f59f7d1331deb04168a112b27a6e2c0 Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Tue, 19 Mar 2024 13:54:26 -0600 Subject: [PATCH] simplify --- frigate/object_processing.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/frigate/object_processing.py b/frigate/object_processing.py index 6c393383c..b2a8559c2 100644 --- a/frigate/object_processing.py +++ b/frigate/object_processing.py @@ -190,24 +190,28 @@ class TrackedObject: if len(zone.objects) > 0 and obj_data["label"] not in zone.objects: continue contour = zone.contour - zone_score = self.zone_presence.get(name, 0) + zone_score = self.zone_presence.get(name, 0) + 1 # check if the object is in the zone if cv2.pointPolygonTest(contour, bottom_center, False) >= 0: # if the object passed the filters once, dont apply again if name in self.current_zones or not zone_filtered(self, zone.filters): - self.zone_presence[name] = zone_score + 1 - # an object is only considered present in a zone if it has a zone inertia of 3+ - if self.zone_presence[name] >= zone.inertia: - loitering_score = self.zone_loitering.get(name, 0) - self.zone_loitering[name] = loitering_score + 1 + if zone_score >= zone.inertia: + loitering_score = self.zone_loitering.get(name, 0) + 1 # loitering time is configured as seconds, convert to count of frames - if self.zone_loitering[name] >= (self.camera_config.zones[name].loitering_time * self.camera_config.detect.fps): + if loitering_score >= ( + self.camera_config.zones[name].loitering_time + * self.camera_config.detect.fps + ): current_zones.append(name) if name not in self.entered_zones: self.entered_zones.append(name) + else: + self.zone_loitering[name] = loitering_score + else: + self.zone_presence[name] = zone_score else: # once an object has a zone inertia of 3+ it is not checked anymore if 0 < zone_score < zone.inertia: @@ -531,7 +535,9 @@ class CameraState: ): max_target_box = self.ptz_autotracker_thread.ptz_autotracker.tracked_object_metrics[ self.name - ]["max_target_box"] + ][ + "max_target_box" + ] side_length = max_target_box * ( max( self.camera_config.detect.width,