This commit is contained in:
Josh Hawkins 2023-09-03 16:48:49 -05:00
parent 57588a8287
commit 2eb474b437
2 changed files with 22 additions and 6 deletions

View File

@ -199,6 +199,8 @@ class PtzAutoTracker:
return
self.onvif.get_camera_status(camera_name)
# movement thread per camera
if not self.move_threads or not self.move_threads[camera_name]:
self.move_threads[camera_name] = threading.Thread(
@ -279,7 +281,6 @@ class PtzAutoTracker:
camera_config = self.config.cameras[camera]
if camera_config.onvif.autotracking.zooming:
# frame width and height
camera_width = camera_config.frame_shape[1]
camera_height = camera_config.frame_shape[0]
camera_area = camera_width * camera_height
@ -291,6 +292,7 @@ class PtzAutoTracker:
# ensure zooming level is in range
# if so, check if bounding box is 10% of an edge
# if so, try zooming in, otherwise try zooming out
# should we make these configurable?
edge_threshold = 0.1
area_threshold = 0.6
@ -473,4 +475,11 @@ class PtzAutoTracker:
autotracker_config.return_preset.lower(),
)
self.ptz_metrics[camera]["ptz_reset"].set()
# empty move queue
while not self.move_queues[camera].empty():
self.move_queues[camera].get()
# clear tracked object
self.tracked_object[camera] = None
self.tracked_object_previous[camera] = None

View File

@ -458,11 +458,18 @@ class OnvifController:
self.ptz_metrics[camera_name]["ptz_stop_time"].value = 0
if self.config.cameras[camera_name].onvif.autotracking.zooming:
# interpolate the actual zoom level reported by the camera into the relative zoom range
self.ptz_metrics[camera_name][
"ptz_zoom_level"
].value = status.Position.Zoom.x
logger.debug(f"Camera zoom level: {status.Position.Zoom.x}")
# store zoom level as 0 to 1 interpolated from the values of the camera
self.ptz_metrics[camera_name]["ptz_zoom_level"].value = numpy.interp(
round(status.Position.Zoom.x, 2),
[0, 1],
[
self.cams[camera_name]["absolute_zoom_range"]["XRange"]["Min"],
self.cams[camera_name]["absolute_zoom_range"]["XRange"]["Max"],
],
)
logger.debug(
f'Camera zoom level: {self.ptz_metrics[camera_name]["ptz_zoom_level"].value}'
)
return {
"pan": status.Position.PanTilt.x,