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.feature_metrics: dict[str, FeatureMetricsTypes] = {}
|
||||||
self.ptz_metrics: dict[str, PTZMetricsTypes] = {}
|
self.ptz_metrics: dict[str, PTZMetricsTypes] = {}
|
||||||
self.processes: dict[str, int] = {}
|
self.processes: dict[str, int] = {}
|
||||||
|
self.region_grids: dict[str, list[list[dict[str, int]]]] = {}
|
||||||
|
|
||||||
def set_environment_vars(self) -> None:
|
def set_environment_vars(self) -> None:
|
||||||
for key, value in self.config.environment_vars.items():
|
for key, value in self.config.environment_vars.items():
|
||||||
@ -453,6 +454,10 @@ class FrigateApp:
|
|||||||
output_processor.start()
|
output_processor.start()
|
||||||
logger.info(f"Output process started: {output_processor.pid}")
|
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:
|
def start_camera_processors(self) -> None:
|
||||||
for name, config in self.config.cameras.items():
|
for name, config in self.config.cameras.items():
|
||||||
if not self.config.cameras[name].enabled:
|
if not self.config.cameras[name].enabled:
|
||||||
@ -472,6 +477,7 @@ class FrigateApp:
|
|||||||
self.detected_frames_queue,
|
self.detected_frames_queue,
|
||||||
self.camera_metrics[name],
|
self.camera_metrics[name],
|
||||||
self.ptz_metrics[name],
|
self.ptz_metrics[name],
|
||||||
|
self.region_grids[name],
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
camera_process.daemon = True
|
camera_process.daemon = True
|
||||||
@ -612,6 +618,7 @@ class FrigateApp:
|
|||||||
self.start_detectors()
|
self.start_detectors()
|
||||||
self.start_video_output_processor()
|
self.start_video_output_processor()
|
||||||
self.start_ptz_autotracker()
|
self.start_ptz_autotracker()
|
||||||
|
self.init_historical_regions()
|
||||||
self.start_detected_frames_processor()
|
self.start_detected_frames_processor()
|
||||||
self.start_camera_processors()
|
self.start_camera_processors()
|
||||||
self.start_camera_capture_processes()
|
self.start_camera_capture_processes()
|
||||||
|
|||||||
@ -266,5 +266,4 @@ def find_by_key(dictionary, target_key):
|
|||||||
|
|
||||||
def get_tomorrow_at_2() -> datetime.datetime:
|
def get_tomorrow_at_2() -> datetime.datetime:
|
||||||
tomorrow = datetime.datetime.now() + datetime.timedelta(days=1)
|
tomorrow = datetime.datetime.now() + datetime.timedelta(days=1)
|
||||||
tomorrow.replace(hour=2, minute=0, second=0)
|
return tomorrow.replace(hour=2, minute=0, second=0)
|
||||||
return tomorrow
|
|
||||||
|
|||||||
@ -52,6 +52,7 @@ def get_camera_regions_grid(
|
|||||||
.where(Event.start_time > last_update)
|
.where(Event.start_time > last_update)
|
||||||
)
|
)
|
||||||
valid_event_ids = [e["id"] for e in events.dicts()]
|
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
|
# no new events, return as is
|
||||||
if not valid_event_ids:
|
if not valid_event_ids:
|
||||||
@ -71,6 +72,8 @@ def get_camera_regions_grid(
|
|||||||
.dicts()
|
.dicts()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
logger.debug(f"Found {len(timeline)} new entries for {name}")
|
||||||
|
|
||||||
width = detect.width
|
width = detect.width
|
||||||
height = detect.height
|
height = detect.height
|
||||||
|
|
||||||
@ -106,9 +109,6 @@ def get_camera_regions_grid(
|
|||||||
for x in range(GRID_SIZE):
|
for x in range(GRID_SIZE):
|
||||||
for y in range(GRID_SIZE):
|
for y in range(GRID_SIZE):
|
||||||
cell = grid[x][y]
|
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:
|
if len(cell["sizes"]) == 0:
|
||||||
continue
|
continue
|
||||||
|
|||||||
@ -32,7 +32,6 @@ from frigate.util.image import (
|
|||||||
from frigate.util.object import (
|
from frigate.util.object import (
|
||||||
box_inside,
|
box_inside,
|
||||||
create_tensor_input,
|
create_tensor_input,
|
||||||
get_camera_regions_grid,
|
|
||||||
get_cluster_candidates,
|
get_cluster_candidates,
|
||||||
get_cluster_region,
|
get_cluster_region,
|
||||||
get_cluster_region_from_grid,
|
get_cluster_region_from_grid,
|
||||||
@ -383,6 +382,7 @@ def track_camera(
|
|||||||
detected_objects_queue,
|
detected_objects_queue,
|
||||||
process_info,
|
process_info,
|
||||||
ptz_metrics,
|
ptz_metrics,
|
||||||
|
region_grid,
|
||||||
):
|
):
|
||||||
stop_event = mp.Event()
|
stop_event = mp.Event()
|
||||||
|
|
||||||
@ -423,8 +423,6 @@ def track_camera(
|
|||||||
|
|
||||||
frame_manager = SharedMemoryFrameManager()
|
frame_manager = SharedMemoryFrameManager()
|
||||||
|
|
||||||
region_grid = get_camera_regions_grid(config.name, config.detect)
|
|
||||||
|
|
||||||
process_frames(
|
process_frames(
|
||||||
name,
|
name,
|
||||||
frame_queue,
|
frame_queue,
|
||||||
@ -528,7 +526,7 @@ def process_frames(
|
|||||||
|
|
||||||
while not stop_event.is_set():
|
while not stop_event.is_set():
|
||||||
if datetime.datetime.now() > next_region_update:
|
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()
|
next_region_update = get_tomorrow_at_2()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user