From 8fb2eac2dba633005ec3bbbdf27b277c5a7ba474 Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Sun, 15 Oct 2023 13:07:02 -0500 Subject: [PATCH] try zoom when tracked object is not moving --- frigate/ptz/autotrack.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/frigate/ptz/autotrack.py b/frigate/ptz/autotrack.py index ef27658f0..5b4e45c28 100644 --- a/frigate/ptz/autotrack.py +++ b/frigate/ptz/autotrack.py @@ -782,7 +782,17 @@ class PtzAutoTracker: self._enqueue_move(camera, obj.obj_data["frame_time"], pan, tilt, zoom) def _autotrack_move_zoom_only(self, camera, obj): - zoom = self._get_zoom_amount(camera, obj, obj.obj_data["box"]) + camera_config = self.config.cameras[camera] + camera_width = camera_config.frame_shape[1] + camera_height = camera_config.frame_shape[0] + + if camera_config.onvif.autotracking.zooming == ZoomingModeEnum.absolute: + zoom = self._get_zoom_amount(camera, obj, obj.obj_data["box"]) + + if camera_config.onvif.autotracking.zooming == ZoomingModeEnum.relative: + target_box = obj.obj_data["area"] / (camera_width * camera_height) + zoom = target_box ** self.zoom_factor[camera] + if zoom != 0: self._enqueue_move(camera, obj.obj_data["frame_time"], 0, 0, zoom)