Files
2026-07-13 12:10:44 +08:00

40 lines
890 B
Python

from abc import ABC, abstractmethod
from numpy import ndarray
from frigate.config import MotionConfig
class MotionDetector(ABC):
@abstractmethod
def __init__(
self,
frame_shape: tuple[int, int, int],
config: MotionConfig,
fps: int,
improve_contrast: bool,
threshold: int,
contour_area: int | None,
) -> None:
pass
@abstractmethod
def detect(self, frame: ndarray) -> list:
"""Detect motion and return motion boxes."""
pass
@abstractmethod
def is_calibrating(self) -> bool:
"""Return if motion is recalibrating."""
pass
@abstractmethod
def update_mask(self) -> None:
"""Update the motion mask after a config change."""
pass
@abstractmethod
def stop(self) -> None:
"""Stop any ongoing work and processes."""
pass