Explorar el Código

update birdseye to handle stationary objects

Blake Blackshear hace 3 años
padre
commit
ebdfbfe96c
Se han modificado 3 ficheros con 6 adiciones y 5 borrados
  1. 2 0
      docs/docs/integrations/mqtt.md
  2. 2 0
      frigate/object_processing.py
  3. 2 5
      frigate/output.py

+ 2 - 0
docs/docs/integrations/mqtt.md

@@ -56,6 +56,7 @@ Message published for each changed event. The first message is published when th
     "thumbnail": null,
     "has_snapshot": false,
     "has_clip": false,
+    "stationary": false, // whether or not the object is considered stationary
     "motionless_count": 0, // number of frames the object has been motionless
     "position_changes": 2 // number of times the object has moved from a stationary position
   },
@@ -78,6 +79,7 @@ Message published for each changed event. The first message is published when th
     "thumbnail": null,
     "has_snapshot": false,
     "has_clip": false,
+    "stationary": false, // whether or not the object is considered stationary
     "motionless_count": 0, // number of frames the object has been motionless
     "position_changes": 2 // number of times the object has changed position
   }

+ 2 - 0
frigate/object_processing.py

@@ -193,6 +193,8 @@ class TrackedObject:
             "box": self.obj_data["box"],
             "area": self.obj_data["area"],
             "region": self.obj_data["region"],
+            "stationary": self.obj_data["motionless_count"]
+            > self.camera_config.detect.stationary_threshold,
             "motionless_count": self.obj_data["motionless_count"],
             "position_changes": self.obj_data["position_changes"],
             "current_zones": self.current_zones.copy(),

+ 2 - 5
frigate/output.py

@@ -184,10 +184,7 @@ class BirdsEyeFrameManager:
         if self.mode == BirdseyeModeEnum.continuous:
             return True
 
-        if (
-            self.mode == BirdseyeModeEnum.motion
-            and object_box_count + motion_box_count > 0
-        ):
+        if self.mode == BirdseyeModeEnum.motion and motion_box_count > 0:
             return True
 
         if self.mode == BirdseyeModeEnum.objects and object_box_count > 0:
@@ -418,7 +415,7 @@ def output_frames(config: FrigateConfig, video_output_queue):
         ):
             if birdseye_manager.update(
                 camera,
-                len(current_tracked_objects),
+                len([o for o in current_tracked_objects if not o["stationary"]]),
                 len(motion_boxes),
                 frame_time,
                 frame,