hysteresis constants for absolute zooming

This commit is contained in:
Josh Hawkins 2023-10-15 17:21:01 -05:00
parent 2a121d3267
commit 7c7615b291
2 changed files with 14 additions and 8 deletions

View File

@ -57,6 +57,6 @@ INSERT_MANY_RECORDINGS = "insert_many_recordings"
AUTOTRACKING_MOTION_MIN_DISTANCE = 20
AUTOTRACKING_MOTION_MAX_POINTS = 500
AUTOTRACKING_MAX_MOVE_METRICS = 500
AUTOTRACKING_ZOOM_OUT_HYSTERESIS = 1.1
AUTOTRACKING_ZOOM_IN_HYSTERESIS = 0.9
AUTOTRACKING_ZOOM_OUT_HYSTERESIS = 2.0
AUTOTRACKING_ZOOM_IN_HYSTERESIS = 0.8
AUTOTRACKING_ZOOM_EDGE_THRESHOLD = 0.05

View File

@ -648,12 +648,18 @@ class PtzAutoTracker:
below_area_threshold = target_box < 0.05
# introduce some hysteresis to prevent a yo-yo zooming effect
zoom_out_hysteresis = target_box > (
self.previous_target_box[camera] * AUTOTRACKING_ZOOM_OUT_HYSTERESIS
)
zoom_in_hysteresis = target_box < (
self.previous_target_box[camera] * AUTOTRACKING_ZOOM_IN_HYSTERESIS
)
if camera_config.onvif.autotracking.zooming == ZoomingModeEnum.absolute:
zoom_out_hysteresis = target_box > (
self.previous_target_box[camera] * AUTOTRACKING_ZOOM_OUT_HYSTERESIS
)
zoom_in_hysteresis = target_box < (
self.previous_target_box[camera] * AUTOTRACKING_ZOOM_IN_HYSTERESIS
)
# relative target boxes deadzone is much smaller
if camera_config.onvif.autotracking.zooming == ZoomingModeEnum.relative:
zoom_out_hysteresis = target_box > (self.previous_target_box[camera] * 1.1)
zoom_in_hysteresis = target_box < (self.previous_target_box[camera] * 0.9)
at_max_zoom = self.ptz_metrics[camera]["ptz_zoom_level"].value == 1
at_min_zoom = self.ptz_metrics[camera]["ptz_zoom_level"].value == 0