This commit is contained in:
Nick Mowen 2023-07-04 11:02:24 -06:00
parent 40f21e7346
commit eb6d440eb8
4 changed files with 12 additions and 25 deletions

View File

@ -387,24 +387,6 @@ class BirdsEyeFrameManager:
) -> tuple[any]: ) -> tuple[any]:
"""Calculate the optimal layout for 2+ cameras.""" """Calculate the optimal layout for 2+ cameras."""
def get_standard_aspect_ratio(camera_width, camera_height) -> tuple[int, int]:
"""Ensure that only standard aspect ratios are used."""
known_aspects = [
(16, 9),
(9, 16),
(32, 9),
(12, 9),
(9, 12),
] # aspects are scaled to be same ratio
known_aspects_ratios = list(
map(lambda aspect: aspect[0] / aspect[1], known_aspects)
)
closest = min(
known_aspects_ratios,
key=lambda x: abs(x - (camera_width / camera_height)),
)
return known_aspects[known_aspects_ratios.index(closest)]
def map_layout(row_height: int): def map_layout(row_height: int):
"""Map the calculated layout.""" """Map the calculated layout."""
candidate_layout = [] candidate_layout = []
@ -462,9 +444,17 @@ class BirdsEyeFrameManager:
for camera in cameras_to_add: for camera in cameras_to_add:
camera_dims = self.cameras[camera]["dimensions"].copy() camera_dims = self.cameras[camera]["dimensions"].copy()
camera_gcd = math.gcd(camera_dims[0], camera_dims[1]) camera_gcd = math.gcd(camera_dims[0], camera_dims[1])
camera_aspect_x, camera_aspect_y = get_standard_aspect_ratio( camera_aspect_x = camera_dims[0] / camera_gcd
camera_dims[0] / camera_gcd, camera_dims[1] / camera_gcd camera_aspect_y = camera_dims[1] / camera_gcd
)
if round(camera_aspect_x / camera_aspect_y, 1) == 1.8:
# account for slightly off 16:9 cameras
camera_aspect_x = 16
camera_aspect_y = 9
elif round(camera_aspect_x / camera_aspect_y, 1) == 1.3:
# make 4:3 cameras the same relative size as 16:9
camera_aspect_x = 12
camera_aspect_y = 9
if camera_dims[1] > camera_dims[0]: if camera_dims[1] > camera_dims[0]:
portrait = True portrait = True

View File

@ -3,7 +3,6 @@
import copy import copy
import datetime import datetime
import logging import logging
import pytz
import re import re
import shlex import shlex
import urllib.parse import urllib.parse
@ -11,11 +10,11 @@ from collections import Counter
from collections.abc import Mapping from collections.abc import Mapping
from typing import Any, Tuple from typing import Any, Tuple
import pytz
import yaml import yaml
from frigate.const import REGEX_HTTP_CAMERA_USER_PASS, REGEX_RTSP_CAMERA_USER_PASS from frigate.const import REGEX_HTTP_CAMERA_USER_PASS, REGEX_RTSP_CAMERA_USER_PASS
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)

View File

@ -9,7 +9,6 @@ from typing import AnyStr, Optional
import cv2 import cv2
import numpy as np import numpy as np
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)

View File

@ -15,7 +15,6 @@ import py3nvml.py3nvml as nvml
from frigate.util.builtin import escape_special_characters from frigate.util.builtin import escape_special_characters
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)