From 1d99bb908d251446cbdf1e2c2334bdbc519c2dfd Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Tue, 7 Nov 2023 05:31:39 -0600 Subject: [PATCH] only use max target box for relative zoom limiter (#8509) --- frigate/ptz/autotrack.py | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/frigate/ptz/autotrack.py b/frigate/ptz/autotrack.py index 7036d3883..71a28504e 100644 --- a/frigate/ptz/autotrack.py +++ b/frigate/ptz/autotrack.py @@ -863,21 +863,11 @@ class PtzAutoTracker: # introduce some hysteresis to prevent a yo-yo zooming effect zoom_out_hysteresis = ( self.tracked_object_metrics[camera]["target_box"] - > ( - self.tracked_object_metrics[camera]["original_target_box"] - * AUTOTRACKING_ZOOM_OUT_HYSTERESIS - ) - or self.tracked_object_metrics[camera]["target_box"] > self.tracked_object_metrics[camera]["max_target_box"] * AUTOTRACKING_ZOOM_OUT_HYSTERESIS ) zoom_in_hysteresis = ( self.tracked_object_metrics[camera]["target_box"] - < ( - self.tracked_object_metrics[camera]["original_target_box"] - * AUTOTRACKING_ZOOM_IN_HYSTERESIS - ) - or self.tracked_object_metrics[camera]["target_box"] < self.tracked_object_metrics[camera]["max_target_box"] * AUTOTRACKING_ZOOM_IN_HYSTERESIS ) @@ -1073,15 +1063,14 @@ class PtzAutoTracker: ) ) is not None: # zoom value - limit = ( - self.tracked_object_metrics[camera]["original_target_box"] - if self.tracked_object_metrics[camera]["target_box"] - < self.tracked_object_metrics[camera]["max_target_box"] - else self.tracked_object_metrics[camera]["max_target_box"] + ratio = ( + self.tracked_object_metrics[camera]["max_target_box"] + / self.tracked_object_metrics[camera]["target_box"] ) - ratio = limit / self.tracked_object_metrics[camera]["target_box"] zoom = (ratio - 1) / (ratio + 1) - logger.debug(f"{camera}: Zoom calculation: {zoom}") + logger.debug( + f'{camera}: limit: {self.tracked_object_metrics[camera]["max_target_box"]}, ratio: {ratio} zoom calculation: {zoom}' + ) if not result: # zoom out with special condition if zooming out because of velocity, edges, etc. zoom = -(1 - zoom) if zoom > 0 else -(zoom * 2 + 1)