mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-07 11:45:24 +03:00
Update the region daily at 2
This commit is contained in:
parent
f66d93a996
commit
b07f93a2cb
@ -70,7 +70,6 @@ class FrigateApp:
|
||||
self.feature_metrics: dict[str, FeatureMetricsTypes] = {}
|
||||
self.ptz_metrics: dict[str, PTZMetricsTypes] = {}
|
||||
self.processes: dict[str, int] = {}
|
||||
self.region_grids: dict[str, list[list[dict[str, int]]]] = {}
|
||||
|
||||
def set_environment_vars(self) -> None:
|
||||
for key, value in self.config.environment_vars.items():
|
||||
@ -454,10 +453,6 @@ class FrigateApp:
|
||||
output_processor.start()
|
||||
logger.info(f"Output process started: {output_processor.pid}")
|
||||
|
||||
def init_historical_regions(self) -> None:
|
||||
for camera in self.config.cameras.values():
|
||||
self.region_grids[camera.name] = get_camera_regions_grid(camera)
|
||||
|
||||
def start_camera_processors(self) -> None:
|
||||
for name, config in self.config.cameras.items():
|
||||
if not self.config.cameras[name].enabled:
|
||||
@ -477,7 +472,6 @@ class FrigateApp:
|
||||
self.detected_frames_queue,
|
||||
self.camera_metrics[name],
|
||||
self.ptz_metrics[name],
|
||||
self.region_grids[name],
|
||||
),
|
||||
)
|
||||
camera_process.daemon = True
|
||||
@ -618,7 +612,6 @@ class FrigateApp:
|
||||
self.start_detectors()
|
||||
self.start_video_output_processor()
|
||||
self.start_ptz_autotracker()
|
||||
self.init_historical_regions()
|
||||
self.start_detected_frames_processor()
|
||||
self.start_camera_processors()
|
||||
self.start_camera_capture_processes()
|
||||
|
||||
@ -262,3 +262,10 @@ def find_by_key(dictionary, target_key):
|
||||
if result is not None:
|
||||
return result
|
||||
return None
|
||||
|
||||
|
||||
def get_tomorrow_at_2() -> datetime.datetime:
|
||||
tomorrow = datetime.datetime.now() + datetime.timedelta(days=1)
|
||||
tomorrow.hour = 2
|
||||
return tomorrow
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@ import cv2
|
||||
import numpy as np
|
||||
from peewee import DoesNotExist
|
||||
|
||||
from frigate.config import CameraConfig, ModelConfig
|
||||
from frigate.config import DetectConfig, ModelConfig
|
||||
from frigate.detectors.detector_config import PixelFormatEnum
|
||||
from frigate.models import Event, Regions, Timeline
|
||||
from frigate.util.image import (
|
||||
@ -26,11 +26,11 @@ logger = logging.getLogger(__name__)
|
||||
GRID_SIZE = 8
|
||||
|
||||
|
||||
def get_camera_regions_grid(camera: CameraConfig) -> list[list[dict[str, any]]]:
|
||||
def get_camera_regions_grid(name: str, detect: DetectConfig) -> list[list[dict[str, any]]]:
|
||||
"""Build a grid of expected region sizes for a camera."""
|
||||
# get grid from db if available
|
||||
try:
|
||||
regions: Regions = Regions.select().where(Regions.camera == camera.name).get()
|
||||
regions: Regions = Regions.select().where(Regions.camera == name).get()
|
||||
grid = regions.grid
|
||||
last_update = regions.last_update
|
||||
except DoesNotExist:
|
||||
@ -45,7 +45,7 @@ def get_camera_regions_grid(camera: CameraConfig) -> list[list[dict[str, any]]]:
|
||||
# get events for timeline entries
|
||||
events = (
|
||||
Event.select(Event.id)
|
||||
.where(Event.camera == camera.name)
|
||||
.where(Event.camera == name)
|
||||
.where(Event.false_positive != True)
|
||||
.where(Event.start_time > last_update)
|
||||
)
|
||||
@ -69,8 +69,8 @@ def get_camera_regions_grid(camera: CameraConfig) -> list[list[dict[str, any]]]:
|
||||
.dicts()
|
||||
)
|
||||
|
||||
width = camera.detect.width
|
||||
height = camera.detect.height
|
||||
width = detect.width
|
||||
height = detect.height
|
||||
|
||||
grid_coef = 1.0 / GRID_SIZE
|
||||
|
||||
@ -119,7 +119,7 @@ def get_camera_regions_grid(camera: CameraConfig) -> list[list[dict[str, any]]]:
|
||||
|
||||
# update db with new grid
|
||||
region = {
|
||||
Regions.camera: camera.name,
|
||||
Regions.camera: name,
|
||||
Regions.grid: grid,
|
||||
Regions.last_update: new_update,
|
||||
}
|
||||
|
||||
@ -22,7 +22,7 @@ from frigate.object_detection import RemoteObjectDetector
|
||||
from frigate.track import ObjectTracker
|
||||
from frigate.track.norfair_tracker import NorfairTracker
|
||||
from frigate.types import PTZMetricsTypes
|
||||
from frigate.util.builtin import EventsPerSecond
|
||||
from frigate.util.builtin import EventsPerSecond, get_tomorrow_at_2
|
||||
from frigate.util.image import (
|
||||
FrameManager,
|
||||
SharedMemoryFrameManager,
|
||||
@ -32,6 +32,7 @@ from frigate.util.image import (
|
||||
from frigate.util.object import (
|
||||
box_inside,
|
||||
create_tensor_input,
|
||||
get_camera_regions_grid,
|
||||
get_cluster_candidates,
|
||||
get_cluster_region,
|
||||
get_cluster_region_from_grid,
|
||||
@ -382,7 +383,6 @@ def track_camera(
|
||||
detected_objects_queue,
|
||||
process_info,
|
||||
ptz_metrics,
|
||||
region_grid,
|
||||
):
|
||||
stop_event = mp.Event()
|
||||
|
||||
@ -441,7 +441,6 @@ def track_camera(
|
||||
motion_enabled,
|
||||
stop_event,
|
||||
ptz_metrics,
|
||||
region_grid,
|
||||
)
|
||||
|
||||
logger.info(f"{name}: exiting subprocess")
|
||||
@ -509,12 +508,13 @@ def process_frames(
|
||||
motion_enabled: mp.Value,
|
||||
stop_event,
|
||||
ptz_metrics: PTZMetricsTypes,
|
||||
region_grid: list[list[dict[str, any]]],
|
||||
exit_on_empty: bool = False,
|
||||
):
|
||||
fps = process_info["process_fps"]
|
||||
detection_fps = process_info["detection_fps"]
|
||||
current_frame_time = process_info["detection_frame"]
|
||||
region_grid = None
|
||||
next_region_update = None
|
||||
|
||||
fps_tracker = EventsPerSecond()
|
||||
fps_tracker.start()
|
||||
@ -524,6 +524,10 @@ def process_frames(
|
||||
region_min_size = get_min_region_size(model_config)
|
||||
|
||||
while not stop_event.is_set():
|
||||
if not region_grid or datetime.datetime.now() > next_region_update:
|
||||
region_grid = get_camera_regions_grid(camera_name, detect_config)
|
||||
next_region_update = get_tomorrow_at_2()
|
||||
|
||||
try:
|
||||
if exit_on_empty:
|
||||
frame_time = frame_queue.get(False)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user