mirror of
https://github.com/blakeblackshear/frigate.git
synced 2024-11-21 19:07:46 +01:00
9df5927ac5
* zoom in/out in search for lost objects * predicted box should not be empty * clean up and update zoom logic * only zoom if enabled * more cleanup * check for valid velocity when zooming * only try absolute zoom in if obj area has changed * zoom logic * don't enqueue lost object zoom if already at limit * don't disable motion boxes during ptz moves * velocity threshold based on move coefficients * fix area zoom logic * disable debug zoom * don't process objects if ptz moving * recalc with exponent * change exponent * remove lost object zooming * increase distance threshold for stationary object * increase distance threshold constant * only zoom out if nonzero * camera name in all debug logging * add camera name to debug logging * camera variable name consistency * update calibration behavior and docs * docs and better zooming * more sensible target values * docs wording * fix velocity threshold variable * zooming tweaks and remove iou for current objects * debug and docs * get valid velocity * include zero * additional debug statements * add zoom hysteresis * zoom on initial move if relative * only update target box if we actually zoom * merge dev * use getattr instead of get * increase distance threshold * reverse logic * get_camera_status after preset move to store zoom * final tweaks and docs * use constants and catch possible debug exception * adjust zoom factor exponent * don't run motion estimation when calling preset * adjust dimension threshold * use numpy for velocity estimate calcs * more numpy conversion * fix numpy shapes * numpy zeros dimension * more zoom out conditions * fix velocity bug * ensure init has been called in debug view * ensure onvif init if enabling by mqtt * change default hysteresis values * recalc relative zoom value * zoom out value * try to zoom when object isn't moving * try zoom when tracked object is not moving * don't try to zoom every time * negate zoom out condition when needed * hysteresis constants for absolute zooming * update zoom conditions * don't recalc target box on zoom only * zoom out if above area threshold * don't print zooming debug for stationary obj * revamp zooming to use area moving average * zooming tweaks and expose property * limit zoom with max target box * use calibration to determine zoom levels * zoom logic fix * docs * add tapo c200 camera * fix initial absolute zoom * small zoom logic fix * better invalid velocity checks * fix test * really fix test this time
54 lines
1.5 KiB
Python
54 lines
1.5 KiB
Python
from multiprocessing import Queue
|
|
from multiprocessing.context import Process
|
|
from multiprocessing.sharedctypes import Synchronized
|
|
from multiprocessing.synchronize import Event
|
|
from typing import Optional, TypedDict
|
|
|
|
from frigate.object_detection import ObjectDetectProcess
|
|
|
|
|
|
class CameraMetricsTypes(TypedDict):
|
|
camera_fps: Synchronized
|
|
capture_process: Optional[Process]
|
|
detection_enabled: Synchronized
|
|
detection_fps: Synchronized
|
|
detection_frame: Synchronized
|
|
ffmpeg_pid: Synchronized
|
|
frame_queue: Queue
|
|
motion_enabled: Synchronized
|
|
improve_contrast_enabled: Synchronized
|
|
motion_threshold: Synchronized
|
|
motion_contour_area: Synchronized
|
|
process: Optional[Process]
|
|
process_fps: Synchronized
|
|
read_start: Synchronized
|
|
skipped_fps: Synchronized
|
|
audio_rms: Synchronized
|
|
audio_dBFS: Synchronized
|
|
|
|
|
|
class PTZMetricsTypes(TypedDict):
|
|
ptz_autotracker_enabled: Synchronized
|
|
ptz_stopped: Event
|
|
ptz_reset: Event
|
|
ptz_start_time: Synchronized
|
|
ptz_stop_time: Synchronized
|
|
ptz_frame_time: Synchronized
|
|
ptz_zoom_level: Synchronized
|
|
ptz_max_zoom: Synchronized
|
|
ptz_min_zoom: Synchronized
|
|
|
|
|
|
class FeatureMetricsTypes(TypedDict):
|
|
audio_enabled: Synchronized
|
|
record_enabled: Synchronized
|
|
|
|
|
|
class StatsTrackingTypes(TypedDict):
|
|
camera_metrics: dict[str, CameraMetricsTypes]
|
|
detectors: dict[str, ObjectDetectProcess]
|
|
started: int
|
|
latest_frigate_version: str
|
|
last_updated: int
|
|
processes: dict[str, int]
|