mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-07 03:35:26 +03:00
Move back to creating grid in main process
This commit is contained in:
parent
f073d6b94b
commit
8633907821
@ -70,6 +70,7 @@ 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():
|
||||
@ -453,6 +454,10 @@ 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:
|
||||
@ -472,6 +477,7 @@ class FrigateApp:
|
||||
self.detected_frames_queue,
|
||||
self.camera_metrics[name],
|
||||
self.ptz_metrics[name],
|
||||
self.region_grids[name],
|
||||
),
|
||||
)
|
||||
camera_process.daemon = True
|
||||
@ -612,6 +618,7 @@ 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()
|
||||
|
||||
@ -266,5 +266,4 @@ def find_by_key(dictionary, target_key):
|
||||
|
||||
def get_tomorrow_at_2() -> datetime.datetime:
|
||||
tomorrow = datetime.datetime.now() + datetime.timedelta(days=1)
|
||||
tomorrow.replace(hour=2, minute=0, second=0)
|
||||
return tomorrow
|
||||
return tomorrow.replace(hour=2, minute=0, second=0)
|
||||
|
||||
@ -52,6 +52,7 @@ def get_camera_regions_grid(
|
||||
.where(Event.start_time > last_update)
|
||||
)
|
||||
valid_event_ids = [e["id"] for e in events.dicts()]
|
||||
logger.debug(f"Found {len(valid_event_ids)} new events for {name}")
|
||||
|
||||
# no new events, return as is
|
||||
if not valid_event_ids:
|
||||
@ -71,6 +72,8 @@ def get_camera_regions_grid(
|
||||
.dicts()
|
||||
)
|
||||
|
||||
logger.debug(f"Found {len(timeline)} new entries for {name}")
|
||||
|
||||
width = detect.width
|
||||
height = detect.height
|
||||
|
||||
@ -106,9 +109,6 @@ def get_camera_regions_grid(
|
||||
for x in range(GRID_SIZE):
|
||||
for y in range(GRID_SIZE):
|
||||
cell = grid[x][y]
|
||||
logger.debug(
|
||||
f"stats for cell {x * grid_coef * width},{y * grid_coef * height} -> {(x + 1) * grid_coef * width},{(y + 1) * grid_coef * height} :: {len(cell['sizes'])} objects"
|
||||
)
|
||||
|
||||
if len(cell["sizes"]) == 0:
|
||||
continue
|
||||
|
||||
@ -32,7 +32,6 @@ 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,
|
||||
@ -383,6 +382,7 @@ def track_camera(
|
||||
detected_objects_queue,
|
||||
process_info,
|
||||
ptz_metrics,
|
||||
region_grid,
|
||||
):
|
||||
stop_event = mp.Event()
|
||||
|
||||
@ -423,8 +423,6 @@ def track_camera(
|
||||
|
||||
frame_manager = SharedMemoryFrameManager()
|
||||
|
||||
region_grid = get_camera_regions_grid(config.name, config.detect)
|
||||
|
||||
process_frames(
|
||||
name,
|
||||
frame_queue,
|
||||
@ -528,7 +526,7 @@ def process_frames(
|
||||
|
||||
while not stop_event.is_set():
|
||||
if datetime.datetime.now() > next_region_update:
|
||||
region_grid = get_camera_regions_grid(camera_name, detect_config)
|
||||
# TODO signal update
|
||||
next_region_update = get_tomorrow_at_2()
|
||||
|
||||
try:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user