From 72209986b695ecf6de26143842d27e20b86eeda1 Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Mon, 10 Feb 2025 14:23:42 -0600 Subject: [PATCH] Estimated object speed for zones (#16452) * utility functions * backend config * backend object speed tracking * draw speed on debug view * basic frontend zone editor * remove line sorting * fix types * highlight line on canvas when entering value in zone edit pane * rename vars and add validation * ensure speed estimation is disabled when user adds more than 4 points * pixel velocity in debug * unit_system in config * ability to define unit system in config * save max speed to db * frontend * docs * clarify docs * utility functions * backend config * backend object speed tracking * draw speed on debug view * basic frontend zone editor * remove line sorting * fix types * highlight line on canvas when entering value in zone edit pane * rename vars and add validation * ensure speed estimation is disabled when user adds more than 4 points * pixel velocity in debug * unit_system in config * ability to define unit system in config * save max speed to db * frontend * docs * clarify docs * fix duplicates from merge * include max_estimated_speed in api responses * add units to zone edit pane * catch undefined * add average speed * clarify docs * only track average speed when object is active * rename vars * ensure points and distances are ordered clockwise * only store the last 10 speeds like score history * remove max estimated speed * update docs * update docs * fix point ordering * improve readability * docs inertia recommendation * fix point ordering * check object frame time * add velocity angle to frontend * docs clarity * add frontend speed filter * fix mqtt docs * fix mqtt docs * don't try to remove distances if they weren't already defined * don't display estimates on debug view/snapshots if object is not in a speed tracking zone * docs * implement speed_threshold for zone presence * docs for threshold * better ground plane image * improve image zone size * add inertia to speed threshold example --- docs/docs/configuration/reference.md | 8 +- docs/docs/configuration/zones.md | 55 ++- docs/docs/integrations/mqtt.md | 8 +- docs/static/img/ground-plane.jpg | Bin 0 -> 236577 bytes .../api/defs/query/events_query_parameters.py | 4 + frigate/api/event.py | 49 +- frigate/config/camera/zone.py | 42 +- frigate/config/ui.py | 10 +- frigate/events/maintainer.py | 5 + frigate/object_processing.py | 8 +- frigate/track/tracked_object.py | 81 +++- frigate/util/velocity.py | 127 ++++++ .../components/filter/SearchFilterGroup.tsx | 5 + web/src/components/input/InputWithTags.tsx | 49 +- .../overlay/detail/SearchDetailDialog.tsx | 48 ++ .../overlay/dialog/SearchFilterDialog.tsx | 68 +++ web/src/components/settings/PolygonCanvas.tsx | 6 + web/src/components/settings/PolygonDrawer.tsx | 78 +++- web/src/components/settings/ZoneEditPane.tsx | 427 +++++++++++++++--- web/src/pages/Explore.tsx | 4 + web/src/types/canvas.ts | 7 + web/src/types/frigateConfig.ts | 3 + web/src/types/search.ts | 6 + web/src/views/search/SearchView.tsx | 2 + web/src/views/settings/MasksAndZonesView.tsx | 9 + 25 files changed, 1030 insertions(+), 79 deletions(-) create mode 100644 docs/static/img/ground-plane.jpg create mode 100644 frigate/util/velocity.py diff --git a/docs/docs/configuration/reference.md b/docs/docs/configuration/reference.md index 30b14f687..93ab40ee7 100644 --- a/docs/docs/configuration/reference.md +++ b/docs/docs/configuration/reference.md @@ -662,7 +662,10 @@ cameras: front_steps: # Required: List of x,y coordinates to define the polygon of the zone. # NOTE: Presence in a zone is evaluated only based on the bottom center of the objects bounding box. - coordinates: 0.284,0.997,0.389,0.869,0.410,0.745 + coordinates: 0.033,0.306,0.324,0.138,0.439,0.185,0.042,0.428 + # Optional: The real-world distances of a 4-sided zone used for zones with speed estimation enabled (default: none) + # List distances in order of the zone points coordinates and use the unit system defined in the ui config + distances: 10,15,12,11 # Optional: Number of consecutive frames required for object to be considered present in the zone (default: shown below). inertia: 3 # Optional: Number of seconds that an object must loiter to be considered in the zone (default: shown below) @@ -813,6 +816,9 @@ ui: # https://www.gnu.org/software/libc/manual/html_node/Formatting-Calendar-Time.html # possible values are shown above (default: not set) strftime_fmt: "%Y/%m/%d %H:%M" + # Optional: Set the unit system to either "imperial" or "metric" (default: metric) + # Used in the UI and in MQTT topics + unit_system: metric # Optional: Telemetry configuration telemetry: diff --git a/docs/docs/configuration/zones.md b/docs/docs/configuration/zones.md index aef6b0a5b..1d1e66c27 100644 --- a/docs/docs/configuration/zones.md +++ b/docs/docs/configuration/zones.md @@ -122,16 +122,59 @@ cameras: - car ``` -### Loitering Time +### Speed Estimation -Zones support a `loitering_time` configuration which can be used to only consider an object as part of a zone if they loiter in the zone for the specified number of seconds. This can be used, for example, to create alerts for cars that stop on the street but not cars that just drive past your camera. +Frigate can be configured to estimate the speed of objects moving through a zone. This works by combining data from Frigate's object tracker and "real world" distance measurements of the edges of the zone. The recommended use case for this feature is to track the speed of vehicles on a road as they move through the zone. + +Your zone must be defined with exactly 4 points and should be aligned to the ground where objects are moving. + +![Ground plane 4-point zone](/img/ground-plane.jpg) + +Speed estimation requires a minimum number of frames for your object to be tracked before a valid estimate can be calculated, so create your zone away from places where objects enter and exit for the best results. _Your zone should not take up the full frame._ An object's speed is tracked while it is in the zone and then saved to Frigate's database. + +Accurate real-world distance measurements are required to estimate speeds. These distances can be specified in your zone config through the `distances` field. ```yaml cameras: name_of_your_camera: zones: - front_yard: - loitering_time: 5 # unit is in seconds - objects: - - person + street: + coordinates: 0.033,0.306,0.324,0.138,0.439,0.185,0.042,0.428 + distances: 10,12,11,13.5 +``` + +Each number in the `distance` field represents the real-world distance between the points in the `coordinates` list. So in the example above, the distance between the first two points ([0.033,0.306] and [0.324,0.138]) is 10. The distance between the second and third set of points ([0.324,0.138] and [0.439,0.185]) is 12, and so on. The fastest and most accurate way to configure this is through the Zone Editor in the Frigate UI. + +The `distance` values are measured in meters or feet, depending on how `unit_system` is configured in your `ui` config: + +```yaml +ui: + # can be "metric" or "imperial", default is metric + unit_system: metric +``` + +The average speed of your object as it moved through your zone is saved in Frigate's database and can be seen in the UI in the Tracked Object Details pane in Explore. Current estimated speed can also be seen on the debug view as the third value in the object label (see the caveats below). Current estimated speed, average estimated speed, and velocity angle (the angle of the direction the object is moving relative to the frame) of tracked objects is also sent through the `events` MQTT topic. See the [MQTT docs](../integrations/mqtt.md#frigateevents). These speed values are output as a number in miles per hour (mph) or kilometers per hour (kph), depending on how `unit_system` is configured in your `ui` config. + +#### Best practices and caveats + +- Speed estimation works best with a straight road or path when your object travels in a straight line across that path. If your object makes turns, speed estimation may not be accurate. +- Create a zone where the bottom center of your object's bounding box travels directly through it and does not become obscured at any time. +- Depending on the size and location of your zone, you may want to decrease the zone's `inertia` value from the default of 3. +- The more accurate your real-world dimensions can be measured, the more accurate speed estimation will be. However, due to the way Frigate's tracking algorithm works, you may need to tweak the real-world distance values so that estimated speeds better match real-world speeds. +- Once an object leaves the zone, speed accuracy will likely decrease due to perspective distortion and misalignment with the calibrated area. Therefore, speed values will show as a zero through MQTT and will not be visible on the debug view when an object is outside of a speed tracking zone. +- The speeds are only an _estimation_ and are highly dependent on camera position, zone points, and real-world measurements. This feature should not be used for law enforcement. + +### Speed Threshold + +Zones can be configured with a minimum speed requirement, meaning an object must be moving at or above this speed to be considered inside the zone. Zone `distances` must be defined as described above. + +```yaml +cameras: + name_of_your_camera: + zones: + sidewalk: + coordinates: ... + distances: ... + inertia: 1 + speed_threshold: 20 # unit is in kph or mph, depending on how unit_system is set (see above) ``` diff --git a/docs/docs/integrations/mqtt.md b/docs/docs/integrations/mqtt.md index 194821cbd..45d95c9f4 100644 --- a/docs/docs/integrations/mqtt.md +++ b/docs/docs/integrations/mqtt.md @@ -52,7 +52,9 @@ Message published for each changed tracked object. The first message is publishe "attributes": { "face": 0.64 }, // attributes with top score that have been identified on the object at any point - "current_attributes": [] // detailed data about the current attributes in this frame + "current_attributes": [], // detailed data about the current attributes in this frame + "current_estimated_speed": 0.71, // current estimated speed (mph or kph) for objects moving through zones with speed estimation enabled + "velocity_angle": 180 // direction of travel relative to the frame for objects moving through zones with speed estimation enabled }, "after": { "id": "1607123955.475377-mxklsc", @@ -89,7 +91,9 @@ Message published for each changed tracked object. The first message is publishe "box": [442, 506, 534, 524], "score": 0.86 } - ] + ], + "current_estimated_speed": 0.77, // current estimated speed (mph or kph) for objects moving through zones with speed estimation enabled + "velocity_angle": 180 // direction of travel relative to the frame for objects moving through zones with speed estimation enabled } } ``` diff --git a/docs/static/img/ground-plane.jpg b/docs/static/img/ground-plane.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f7ea4db2a42a77f1d95fc771068a3669ae96c444 GIT binary patch literal 236577 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 z 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 -ULLAYXbgZ;# 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 min_score)) + if max_speed is not None: + clauses.append((Event.data["average_estimated_speed"] <= max_speed)) + + if min_speed is not None: + clauses.append((Event.data["average_estimated_speed"] >= min_speed)) + if min_length is not None: clauses.append(((Event.end_time - Event.start_time) >= min_length)) @@ -249,6 +257,10 @@ def events(params: EventsQueryParams = Depends()): order_by = Event.data["score"].asc() elif sort == "score_desc": order_by = Event.data["score"].desc() + elif sort == "speed_asc": + order_by = Event.data["average_estimated_speed"].asc() + elif sort == "speed_desc": + order_by = Event.data["average_estimated_speed"].desc() elif sort == "date_asc": order_by = Event.start_time.asc() elif sort == "date_desc": @@ -316,7 +328,15 @@ def events_explore(limit: int = 10): k: v for k, v in event.data.items() if k - in ["type", "score", "top_score", "description", "sub_label_score"] + in [ + "type", + "score", + "top_score", + "description", + "sub_label_score", + "average_estimated_speed", + "velocity_angle", + ] }, "event_count": label_counts[event.label], } @@ -367,6 +387,8 @@ def events_search(request: Request, params: EventsSearchQueryParams = Depends()) before = params.before min_score = params.min_score max_score = params.max_score + min_speed = params.min_speed + max_speed = params.max_speed time_range = params.time_range has_clip = params.has_clip has_snapshot = params.has_snapshot @@ -466,6 +488,16 @@ def events_search(request: Request, params: EventsSearchQueryParams = Depends()) if max_score is not None: event_filters.append((Event.data["score"] <= max_score)) + if min_speed is not None and max_speed is not None: + event_filters.append( + (Event.data["average_estimated_speed"].between(min_speed, max_speed)) + ) + else: + if min_speed is not None: + event_filters.append((Event.data["average_estimated_speed"] >= min_speed)) + if max_speed is not None: + event_filters.append((Event.data["average_estimated_speed"] <= max_speed)) + if time_range != DEFAULT_TIME_RANGE: tz_name = params.timezone hour_modifier, minute_modifier, _ = get_tz_modifiers(tz_name) @@ -581,7 +613,16 @@ def events_search(request: Request, params: EventsSearchQueryParams = Depends()) processed_event["data"] = { k: v for k, v in event["data"].items() - if k in ["type", "score", "top_score", "description"] + if k + in [ + "type", + "score", + "top_score", + "description", + "sub_label_score", + "average_estimated_speed", + "velocity_angle", + ] } if event["id"] in search_results: @@ -596,6 +637,10 @@ def events_search(request: Request, params: EventsSearchQueryParams = Depends()) processed_events.sort(key=lambda x: x["score"]) elif min_score is not None and max_score is not None and sort == "score_desc": processed_events.sort(key=lambda x: x["score"], reverse=True) + elif min_speed is not None and max_speed is not None and sort == "speed_asc": + processed_events.sort(key=lambda x: x["average_estimated_speed"]) + elif min_speed is not None and max_speed is not None and sort == "speed_desc": + processed_events.sort(key=lambda x: x["average_estimated_speed"], reverse=True) elif sort == "date_asc": processed_events.sort(key=lambda x: x["start_time"]) else: diff --git a/frigate/config/camera/zone.py b/frigate/config/camera/zone.py index 37fc1b744..3e69240d5 100644 --- a/frigate/config/camera/zone.py +++ b/frigate/config/camera/zone.py @@ -1,13 +1,16 @@ # this uses the base model because the color is an extra attribute +import logging from typing import Optional, Union import numpy as np -from pydantic import BaseModel, Field, PrivateAttr, field_validator +from pydantic import BaseModel, Field, PrivateAttr, field_validator, model_validator from .objects import FilterConfig __all__ = ["ZoneConfig"] +logger = logging.getLogger(__name__) + class ZoneConfig(BaseModel): filters: dict[str, FilterConfig] = Field( @@ -16,6 +19,10 @@ class ZoneConfig(BaseModel): coordinates: Union[str, list[str]] = Field( title="Coordinates polygon for the defined zone." ) + distances: Optional[Union[str, list[str]]] = Field( + default_factory=list, + title="Real-world distances for the sides of quadrilateral for the defined zone.", + ) inertia: int = Field( default=3, title="Number of consecutive frames required for object to be considered present in the zone.", @@ -26,6 +33,11 @@ class ZoneConfig(BaseModel): ge=0, title="Number of seconds that an object must loiter to be considered in the zone.", ) + speed_threshold: Optional[float] = Field( + default=None, + ge=0.1, + title="Minimum speed value for an object to be considered in the zone.", + ) objects: Union[str, list[str]] = Field( default_factory=list, title="List of objects that can trigger the zone.", @@ -49,6 +61,34 @@ class ZoneConfig(BaseModel): return v + @field_validator("distances", mode="before") + @classmethod + def validate_distances(cls, v): + if v is None: + return None + + if isinstance(v, str): + distances = list(map(str, map(float, v.split(",")))) + elif isinstance(v, list): + distances = [str(float(val)) for val in v] + else: + raise ValueError("Invalid type for distances") + + if len(distances) != 4: + raise ValueError("distances must have exactly 4 values") + + return distances + + @model_validator(mode="after") + def check_loitering_time_constraints(self): + if self.loitering_time > 0 and ( + self.speed_threshold is not None or len(self.distances) > 0 + ): + logger.warning( + "loitering_time should not be set on a zone if speed_threshold or distances is set." + ) + return self + def __init__(self, **config): super().__init__(**config) diff --git a/frigate/config/ui.py b/frigate/config/ui.py index a562edf61..2f66aeed3 100644 --- a/frigate/config/ui.py +++ b/frigate/config/ui.py @@ -5,7 +5,7 @@ from pydantic import Field from .base import FrigateBaseModel -__all__ = ["TimeFormatEnum", "DateTimeStyleEnum", "UIConfig"] +__all__ = ["TimeFormatEnum", "DateTimeStyleEnum", "UnitSystemEnum", "UIConfig"] class TimeFormatEnum(str, Enum): @@ -21,6 +21,11 @@ class DateTimeStyleEnum(str, Enum): short = "short" +class UnitSystemEnum(str, Enum): + imperial = "imperial" + metric = "metric" + + class UIConfig(FrigateBaseModel): timezone: Optional[str] = Field(default=None, title="Override UI timezone.") time_format: TimeFormatEnum = Field( @@ -35,3 +40,6 @@ class UIConfig(FrigateBaseModel): strftime_fmt: Optional[str] = Field( default=None, title="Override date and time format using strftime syntax." ) + unit_system: UnitSystemEnum = Field( + default=UnitSystemEnum.metric, title="The unit system to use for measurements." + ) diff --git a/frigate/events/maintainer.py b/frigate/events/maintainer.py index 68e7432ab..ebc506c73 100644 --- a/frigate/events/maintainer.py +++ b/frigate/events/maintainer.py @@ -25,6 +25,9 @@ def should_update_db(prev_event: Event, current_event: Event) -> bool: or prev_event["entered_zones"] != current_event["entered_zones"] or prev_event["thumbnail"] != current_event["thumbnail"] or prev_event["end_time"] != current_event["end_time"] + or prev_event["average_estimated_speed"] + != current_event["average_estimated_speed"] + or prev_event["velocity_angle"] != current_event["velocity_angle"] ): return True return False @@ -210,6 +213,8 @@ class EventProcessor(threading.Thread): "score": score, "top_score": event_data["top_score"], "attributes": attributes, + "average_estimated_speed": event_data["average_estimated_speed"], + "velocity_angle": event_data["velocity_angle"], "type": "object", "max_severity": event_data.get("max_severity"), }, diff --git a/frigate/object_processing.py b/frigate/object_processing.py index ba2e15b20..dfaf894f7 100644 --- a/frigate/object_processing.py +++ b/frigate/object_processing.py @@ -160,7 +160,12 @@ class CameraState: box[2], box[3], text, - f"{obj['score']:.0%} {int(obj['area'])}", + f"{obj['score']:.0%} {int(obj['area'])}" + + ( + f" {float(obj['current_estimated_speed']):.1f}" + if obj["current_estimated_speed"] != 0 + else "" + ), thickness=thickness, color=color, ) @@ -254,6 +259,7 @@ class CameraState: new_obj = tracked_objects[id] = TrackedObject( self.config.model, self.camera_config, + self.config.ui, self.frame_cache, current_detections[id], ) diff --git a/frigate/track/tracked_object.py b/frigate/track/tracked_object.py index 3da2a5e04..ea1aeedcb 100644 --- a/frigate/track/tracked_object.py +++ b/frigate/track/tracked_object.py @@ -12,6 +12,7 @@ import numpy as np from frigate.config import ( CameraConfig, ModelConfig, + UIConfig, ) from frigate.review.types import SeverityEnum from frigate.util.image import ( @@ -22,6 +23,7 @@ from frigate.util.image import ( is_better_thumbnail, ) from frigate.util.object import box_inside +from frigate.util.velocity import calculate_real_world_speed logger = logging.getLogger(__name__) @@ -31,6 +33,7 @@ class TrackedObject: self, model_config: ModelConfig, camera_config: CameraConfig, + ui_config: UIConfig, frame_cache, obj_data: dict[str, any], ): @@ -42,6 +45,7 @@ class TrackedObject: self.colormap = model_config.colormap self.logos = model_config.all_attribute_logos self.camera_config = camera_config + self.ui_config = ui_config self.frame_cache = frame_cache self.zone_presence: dict[str, int] = {} self.zone_loitering: dict[str, int] = {} @@ -58,6 +62,10 @@ class TrackedObject: self.frame = None self.active = True self.pending_loitering = False + self.speed_history = [] + self.current_estimated_speed = 0 + self.average_estimated_speed = 0 + self.velocity_angle = 0 self.previous = self.to_dict() @property @@ -129,6 +137,8 @@ class TrackedObject: "region": obj_data["region"], "score": obj_data["score"], "attributes": obj_data["attributes"], + "current_estimated_speed": self.current_estimated_speed, + "velocity_angle": self.velocity_angle, } thumb_update = True @@ -136,6 +146,7 @@ class TrackedObject: current_zones = [] bottom_center = (obj_data["centroid"][0], obj_data["box"][3]) in_loitering_zone = False + in_speed_zone = False # check each zone for name, zone in self.camera_config.zones.items(): @@ -144,12 +155,66 @@ class TrackedObject: continue contour = zone.contour zone_score = self.zone_presence.get(name, 0) + 1 + # check if the object is in the zone if cv2.pointPolygonTest(contour, bottom_center, False) >= 0: # if the object passed the filters once, dont apply again if name in self.current_zones or not zone_filtered(self, zone.filters): - # an object is only considered present in a zone if it has a zone inertia of 3+ + # Calculate speed first if this is a speed zone + if ( + zone.distances + and obj_data["frame_time"] == current_frame_time + and self.active + ): + speed_magnitude, self.velocity_angle = ( + calculate_real_world_speed( + zone.contour, + zone.distances, + self.obj_data["estimate_velocity"], + bottom_center, + self.camera_config.detect.fps, + ) + ) + + if self.ui_config.unit_system == "metric": + self.current_estimated_speed = ( + speed_magnitude * 3.6 + ) # m/s to km/h + else: + self.current_estimated_speed = ( + speed_magnitude * 0.681818 + ) # ft/s to mph + + self.speed_history.append(self.current_estimated_speed) + if len(self.speed_history) > 10: + self.speed_history = self.speed_history[-10:] + + self.average_estimated_speed = sum(self.speed_history) / len( + self.speed_history + ) + + # we've exceeded the speed threshold on the zone + # or we don't have a speed threshold set + if ( + zone.speed_threshold is None + or self.average_estimated_speed > zone.speed_threshold + ): + in_speed_zone = True + + logger.debug( + f"Camera: {self.camera_config.name}, tracked object ID: {self.obj_data['id']}, " + f"zone: {name}, pixel velocity: {str(tuple(np.round(self.obj_data['estimate_velocity']).flatten().astype(int)))}, " + f"speed magnitude: {speed_magnitude}, velocity angle: {self.velocity_angle}, " + f"estimated speed: {self.current_estimated_speed:.1f}, " + f"average speed: {self.average_estimated_speed:.1f}, " + f"length: {len(self.speed_history)}" + ) + + # Check zone entry conditions - for speed zones, require both inertia and speed if zone_score >= zone.inertia: + if zone.distances and not in_speed_zone: + continue # Skip zone entry for speed zones until speed threshold met + # if the zone has loitering time, update loitering status if zone.loitering_time > 0: in_loitering_zone = True @@ -174,6 +239,10 @@ class TrackedObject: if 0 < zone_score < zone.inertia: self.zone_presence[name] = zone_score - 1 + # Reset speed if not in speed zone + if zone.distances and name not in current_zones: + self.current_estimated_speed = 0 + # update loitering status self.pending_loitering = in_loitering_zone @@ -255,6 +324,9 @@ class TrackedObject: "current_attributes": self.obj_data["attributes"], "pending_loitering": self.pending_loitering, "max_severity": self.max_severity, + "current_estimated_speed": self.current_estimated_speed, + "average_estimated_speed": self.average_estimated_speed, + "velocity_angle": self.velocity_angle, } if include_thumbnail: @@ -339,7 +411,12 @@ class TrackedObject: box[2], box[3], self.obj_data["label"], - f"{int(self.thumbnail_data['score'] * 100)}% {int(self.thumbnail_data['area'])}", + f"{int(self.thumbnail_data['score'] * 100)}% {int(self.thumbnail_data['area'])}" + + ( + f" {self.thumbnail_data['current_estimated_speed']:.1f}" + if self.thumbnail_data["current_estimated_speed"] != 0 + else "" + ), thickness=thickness, color=color, ) diff --git a/frigate/util/velocity.py b/frigate/util/velocity.py new file mode 100644 index 000000000..207215bfb --- /dev/null +++ b/frigate/util/velocity.py @@ -0,0 +1,127 @@ +import math + +import numpy as np + + +def order_points_clockwise(points): + """ + Ensure points are sorted in clockwise order starting from the top left + + :param points: Array of zone corner points in pixel coordinates + :return: Ordered list of points + """ + top_left = min( + points, key=lambda p: (p[1], p[0]) + ) # Find the top-left point (min y, then x) + + # Remove the top-left point from the list of points + remaining_points = [p for p in points if not np.array_equal(p, top_left)] + + # Sort the remaining points based on the angle relative to the top-left point + def angle_from_top_left(point): + x, y = point[0] - top_left[0], point[1] - top_left[1] + return math.atan2(y, x) + + sorted_points = sorted(remaining_points, key=angle_from_top_left) + + return [top_left] + sorted_points + + +def create_ground_plane(zone_points, distances): + """ + Create a ground plane that accounts for perspective distortion using real-world dimensions for each side of the zone. + + :param zone_points: Array of zone corner points in pixel coordinates + [[x1, y1], [x2, y2], [x3, y3], [x4, y4]] + :param distances: Real-world dimensions ordered by A, B, C, D + :return: Function that calculates real-world distance per pixel at any coordinate + """ + A, B, C, D = zone_points + + # Calculate pixel lengths of each side + AB_px = np.linalg.norm(np.array(B) - np.array(A)) + BC_px = np.linalg.norm(np.array(C) - np.array(B)) + CD_px = np.linalg.norm(np.array(D) - np.array(C)) + DA_px = np.linalg.norm(np.array(A) - np.array(D)) + + AB, BC, CD, DA = map(float, distances) + + AB_scale = AB / AB_px + BC_scale = BC / BC_px + CD_scale = CD / CD_px + DA_scale = DA / DA_px + + def distance_per_pixel(x, y): + """ + Calculate the real-world distance per pixel at a given (x, y) coordinate. + + :param x: X-coordinate in the image + :param y: Y-coordinate in the image + :return: Real-world distance per pixel at the given (x, y) coordinate + """ + # Normalize x and y within the zone + x_norm = (x - A[0]) / (B[0] - A[0]) + y_norm = (y - A[1]) / (D[1] - A[1]) + + # Interpolate scales horizontally and vertically + vertical_scale = AB_scale + (CD_scale - AB_scale) * y_norm + horizontal_scale = DA_scale + (BC_scale - DA_scale) * x_norm + + # Combine horizontal and vertical scales + return (vertical_scale + horizontal_scale) / 2 + + return distance_per_pixel + + +def calculate_real_world_speed( + zone_contour, + distances, + velocity_pixels, + position, + camera_fps, +): + """ + Calculate the real-world speed of a tracked object, accounting for perspective, + directly from the zone string. + + :param zone_contour: Array of absolute zone points + :param distances: List of distances of each side, ordered by A, B, C, D + :param velocity_pixels: List of tuples representing velocity in pixels/frame + :param position: Current position of the object (x, y) in pixels + :param camera_fps: Frames per second of the camera + :return: speed and velocity angle direction + """ + # order the zone_contour points clockwise starting at top left + ordered_zone_contour = order_points_clockwise(zone_contour) + + # find the indices that would sort the original zone_contour to match ordered_zone_contour + sort_indices = [ + np.where((zone_contour == point).all(axis=1))[0][0] + for point in ordered_zone_contour + ] + + # Reorder distances to match the new order of zone_contour + distances = np.array(distances) + ordered_distances = distances[sort_indices] + + ground_plane = create_ground_plane(ordered_zone_contour, ordered_distances) + + if not isinstance(velocity_pixels, np.ndarray): + velocity_pixels = np.array(velocity_pixels) + + avg_velocity_pixels = velocity_pixels.mean(axis=0) + + # get the real-world distance per pixel at the object's current position and calculate real speed + scale = ground_plane(position[0], position[1]) + speed_real = avg_velocity_pixels * scale * camera_fps + + # euclidean speed in real-world units/second + speed_magnitude = np.linalg.norm(speed_real) + + # movement direction + dx, dy = avg_velocity_pixels + angle = math.degrees(math.atan2(dy, dx)) + if angle < 0: + angle += 360 + + return speed_magnitude, angle diff --git a/web/src/components/filter/SearchFilterGroup.tsx b/web/src/components/filter/SearchFilterGroup.tsx index 8aa87f8e4..740a3bce7 100644 --- a/web/src/components/filter/SearchFilterGroup.tsx +++ b/web/src/components/filter/SearchFilterGroup.tsx @@ -116,6 +116,9 @@ export default function SearchFilterGroup({ if (filter?.min_score || filter?.max_score) { sortTypes.push("score_desc", "score_asc"); } + if (filter?.min_speed || filter?.max_speed) { + sortTypes.push("speed_desc", "speed_asc"); + } if (filter?.event_id || filter?.query) { sortTypes.push("relevance"); } @@ -498,6 +501,8 @@ export function SortTypeContent({ date_desc: "Date (Descending)", score_asc: "Object Score (Ascending)", score_desc: "Object Score (Descending)", + speed_asc: "Estimated Speed (Ascending)", + speed_desc: "Estimated Speed (Descending)", relevance: "Relevance", }; diff --git a/web/src/components/input/InputWithTags.tsx b/web/src/components/input/InputWithTags.tsx index d5904b2a5..3ae78e70a 100644 --- a/web/src/components/input/InputWithTags.tsx +++ b/web/src/components/input/InputWithTags.tsx @@ -216,11 +216,14 @@ export default function InputWithTags({ type == "after" || type == "time_range" || type == "min_score" || - type == "max_score" + type == "max_score" || + type == "min_speed" || + type == "max_speed" ) { const newFilters = { ...filters }; let timestamp = 0; let score = 0; + let speed = 0; switch (type) { case "before": @@ -294,6 +297,40 @@ export default function InputWithTags({ newFilters[type] = score / 100; } break; + case "min_speed": + case "max_speed": + speed = parseFloat(value); + if (score >= 0) { + // Check for conflicts between min_speed and max_speed + if ( + type === "min_speed" && + filters.max_speed !== undefined && + speed > filters.max_speed + ) { + toast.error( + "The 'min_speed' must be less than or equal to the 'max_speed'.", + { + position: "top-center", + }, + ); + return; + } + if ( + type === "max_speed" && + filters.min_speed !== undefined && + speed < filters.min_speed + ) { + toast.error( + "The 'max_speed' must be greater than or equal to the 'min_speed'.", + { + position: "top-center", + }, + ); + return; + } + newFilters[type] = speed; + } + break; case "time_range": newFilters[type] = value; break; @@ -369,6 +406,10 @@ export default function InputWithTags({ }`; } else if (filterType === "min_score" || filterType === "max_score") { return Math.round(Number(filterValues) * 100).toString() + "%"; + } else if (filterType === "min_speed" || filterType === "max_speed") { + return ( + filterValues + (config?.ui.unit_system == "metric" ? " kph" : " mph") + ); } else if ( filterType === "has_clip" || filterType === "has_snapshot" || @@ -397,7 +438,11 @@ export default function InputWithTags({ ((filterType === "min_score" || filterType === "max_score") && !isNaN(Number(trimmedValue)) && Number(trimmedValue) >= 50 && - Number(trimmedValue) <= 100) + Number(trimmedValue) <= 100) || + ((filterType === "min_speed" || filterType === "max_speed") && + !isNaN(Number(trimmedValue)) && + Number(trimmedValue) >= 1 && + Number(trimmedValue) <= 150) ) { createFilter( filterType, diff --git a/web/src/components/overlay/detail/SearchDetailDialog.tsx b/web/src/components/overlay/detail/SearchDetailDialog.tsx index f15627b71..dd088ad83 100644 --- a/web/src/components/overlay/detail/SearchDetailDialog.tsx +++ b/web/src/components/overlay/detail/SearchDetailDialog.tsx @@ -25,6 +25,7 @@ import { baseUrl } from "@/api/baseUrl"; import { cn } from "@/lib/utils"; import ActivityIndicator from "@/components/indicators/activity-indicator"; import { + FaArrowRight, FaCheckCircle, FaChevronDown, FaDownload, @@ -329,6 +330,30 @@ function ObjectDetailsTab({ } }, [search]); + const averageEstimatedSpeed = useMemo(() => { + if (!search || !search.data?.average_estimated_speed) { + return undefined; + } + + if (search.data?.average_estimated_speed != 0) { + return search.data?.average_estimated_speed.toFixed(1); + } else { + return undefined; + } + }, [search]); + + const velocityAngle = useMemo(() => { + if (!search || !search.data?.velocity_angle) { + return undefined; + } + + if (search.data?.velocity_angle != 0) { + return search.data?.velocity_angle.toFixed(1); + } else { + return undefined; + } + }, [search]); + const updateDescription = useCallback(() => { if (!search) { return; @@ -440,6 +465,29 @@ function ObjectDetailsTab({ {score}%{subLabelScore && ` (${subLabelScore}%)`} + {averageEstimatedSpeed && ( +
+
Estimated Speed
+
+ {averageEstimatedSpeed && ( +
+ {averageEstimatedSpeed}{" "} + {config?.ui.unit_system == "imperial" ? "mph" : "kph"}{" "} + {velocityAngle != undefined && ( + + + + )} +
+ )} +
+
+ )}
Camera
diff --git a/web/src/components/overlay/dialog/SearchFilterDialog.tsx b/web/src/components/overlay/dialog/SearchFilterDialog.tsx index 65109591b..23deee531 100644 --- a/web/src/components/overlay/dialog/SearchFilterDialog.tsx +++ b/web/src/components/overlay/dialog/SearchFilterDialog.tsx @@ -71,9 +71,11 @@ export default function SearchFilterDialog({ currentFilter && (currentFilter.time_range || (currentFilter.min_score ?? 0) > 0.5 || + (currentFilter.min_speed ?? 1) > 1 || (currentFilter.has_snapshot ?? 0) === 1 || (currentFilter.has_clip ?? 0) === 1 || (currentFilter.max_score ?? 1) < 1 || + (currentFilter.max_speed ?? 150) < 150 || (currentFilter.zones?.length ?? 0) > 0 || (currentFilter.sub_labels?.length ?? 0) > 0), [currentFilter], @@ -124,6 +126,14 @@ export default function SearchFilterDialog({ setCurrentFilter({ ...currentFilter, min_score: min, max_score: max }) } /> + + setCurrentFilter({ ...currentFilter, min_speed: min, max_speed: max }) + } + /> void; +}; +export function SpeedFilterContent({ + config, + minSpeed, + maxSpeed, + setSpeedRange, +}: SpeedFilterContentProps) { + return ( +
+ +
+ Estimated Speed ({config?.ui.unit_system == "metric" ? "kph" : "mph"}) +
+
+ { + const value = e.target.value; + + if (value) { + setSpeedRange(parseInt(value), maxSpeed ?? 1.0); + } + }} + /> + setSpeedRange(min, max)} + /> + { + const value = e.target.value; + + if (value) { + setSpeedRange(minSpeed ?? 1, parseInt(value)); + } + }} + /> +
+
+ ); +} + type SnapshotClipContentProps = { config?: FrigateConfig; hasSnapshot: boolean | undefined; diff --git a/web/src/components/settings/PolygonCanvas.tsx b/web/src/components/settings/PolygonCanvas.tsx index e6851b63c..d2a0a46b5 100644 --- a/web/src/components/settings/PolygonCanvas.tsx +++ b/web/src/components/settings/PolygonCanvas.tsx @@ -17,6 +17,7 @@ type PolygonCanvasProps = { activePolygonIndex: number | undefined; hoveredPolygonIndex: number | null; selectedZoneMask: PolygonType[] | undefined; + activeLine?: number; }; export function PolygonCanvas({ @@ -29,6 +30,7 @@ export function PolygonCanvas({ activePolygonIndex, hoveredPolygonIndex, selectedZoneMask, + activeLine, }: PolygonCanvasProps) { const [isLoaded, setIsLoaded] = useState(false); const [image, setImage] = useState(); @@ -281,12 +283,14 @@ export function PolygonCanvas({ stageRef={stageRef} key={index} points={polygon.points} + distances={polygon.distances} isActive={index === activePolygonIndex} isHovered={index === hoveredPolygonIndex} isFinished={polygon.isFinished} color={polygon.color} handlePointDragMove={handlePointDragMove} handleGroupDragEnd={handleGroupDragEnd} + activeLine={activeLine} /> ), )} @@ -298,12 +302,14 @@ export function PolygonCanvas({ stageRef={stageRef} key={activePolygonIndex} points={polygons[activePolygonIndex].points} + distances={polygons[activePolygonIndex].distances} isActive={true} isHovered={activePolygonIndex === hoveredPolygonIndex} isFinished={polygons[activePolygonIndex].isFinished} color={polygons[activePolygonIndex].color} handlePointDragMove={handlePointDragMove} handleGroupDragEnd={handleGroupDragEnd} + activeLine={activeLine} /> )} diff --git a/web/src/components/settings/PolygonDrawer.tsx b/web/src/components/settings/PolygonDrawer.tsx index 966aad2ca..1ae3d4601 100644 --- a/web/src/components/settings/PolygonDrawer.tsx +++ b/web/src/components/settings/PolygonDrawer.tsx @@ -6,7 +6,7 @@ import { useRef, useState, } from "react"; -import { Line, Circle, Group } from "react-konva"; +import { Line, Circle, Group, Text, Rect } from "react-konva"; import { minMax, toRGBColorString, @@ -20,23 +20,27 @@ import { Vector2d } from "konva/lib/types"; type PolygonDrawerProps = { stageRef: RefObject; points: number[][]; + distances: number[]; isActive: boolean; isHovered: boolean; isFinished: boolean; color: number[]; handlePointDragMove: (e: KonvaEventObject) => void; handleGroupDragEnd: (e: KonvaEventObject) => void; + activeLine?: number; }; export default function PolygonDrawer({ stageRef, points, + distances, isActive, isHovered, isFinished, color, handlePointDragMove, handleGroupDragEnd, + activeLine, }: PolygonDrawerProps) { const vertexRadius = 6; const flattenedPoints = useMemo(() => flattenPoints(points), [points]); @@ -113,6 +117,33 @@ export default function PolygonDrawer({ stageRef.current.container().style.cursor = cursor; }, [stageRef, cursor]); + // Calculate midpoints for distance labels based on sorted points + const midpoints = useMemo(() => { + const midpointsArray = []; + for (let i = 0; i < points.length; i++) { + const p1 = points[i]; + const p2 = points[(i + 1) % points.length]; + const midpointX = (p1[0] + p2[0]) / 2; + const midpointY = (p1[1] + p2[1]) / 2; + midpointsArray.push([midpointX, midpointY]); + } + return midpointsArray; + }, [points]); + + // Determine the points for the active line + const activeLinePoints = useMemo(() => { + if ( + activeLine === undefined || + activeLine < 1 || + activeLine > points.length + ) { + return []; + } + const p1 = points[activeLine - 1]; + const p2 = points[activeLine % points.length]; + return [p1[0], p1[1], p2[0], p2[1]]; + }, [activeLine, points]); + return ( )} + {isActive && activeLinePoints.length > 0 && ( + + )} {points.map((point, index) => { if (!isActive) { return; @@ -195,6 +234,43 @@ export default function PolygonDrawer({ /> ); })} + {isFinished && ( + + {midpoints.map((midpoint, index) => { + const [x, y] = midpoint; + const distance = distances[index]; + if (distance === undefined) return null; + + const squareSize = 22; + + return ( + + + + + ); + })} + + )} ); } diff --git a/web/src/components/settings/ZoneEditPane.tsx b/web/src/components/settings/ZoneEditPane.tsx index 54799db72..9caf04273 100644 --- a/web/src/components/settings/ZoneEditPane.tsx +++ b/web/src/components/settings/ZoneEditPane.tsx @@ -40,6 +40,7 @@ type ZoneEditPaneProps = { setIsLoading: React.Dispatch>; onSave?: () => void; onCancel?: () => void; + setActiveLine: React.Dispatch>; }; export default function ZoneEditPane({ @@ -52,6 +53,7 @@ export default function ZoneEditPane({ setIsLoading, onSave, onCancel, + setActiveLine, }: ZoneEditPaneProps) { const { data: config, mutate: updateConfig } = useSWR("config"); @@ -80,69 +82,144 @@ export default function ZoneEditPane({ } }, [polygon, config]); - const formSchema = z.object({ - name: z - .string() - .min(2, { - message: "Zone name must be at least 2 characters.", - }) - .transform((val: string) => val.trim().replace(/\s+/g, "_")) - .refine( - (value: string) => { - return !cameras.map((cam) => cam.name).includes(value); - }, - { - message: "Zone name must not be the name of a camera.", - }, - ) - .refine( - (value: string) => { - const otherPolygonNames = - polygons - ?.filter((_, index) => index !== activePolygonIndex) - .map((polygon) => polygon.name) || []; + const [lineA, lineB, lineC, lineD] = useMemo(() => { + const distances = + polygon?.camera && + polygon?.name && + config?.cameras[polygon.camera]?.zones[polygon.name]?.distances; - return !otherPolygonNames.includes(value); - }, - { - message: "Zone name already exists on this camera.", - }, - ) - .refine( - (value: string) => { - return !value.includes("."); - }, - { - message: "Zone name must not contain a period.", - }, - ) - .refine((value: string) => /^[a-zA-Z0-9_-]+$/.test(value), { - message: "Zone name has an illegal character.", + return Array.isArray(distances) + ? distances.map((value) => parseFloat(value) || 0) + : [undefined, undefined, undefined, undefined]; + }, [polygon, config]); + + const formSchema = z + .object({ + name: z + .string() + .min(2, { + message: "Zone name must be at least 2 characters.", + }) + .transform((val: string) => val.trim().replace(/\s+/g, "_")) + .refine( + (value: string) => { + return !cameras.map((cam) => cam.name).includes(value); + }, + { + message: "Zone name must not be the name of a camera.", + }, + ) + .refine( + (value: string) => { + const otherPolygonNames = + polygons + ?.filter((_, index) => index !== activePolygonIndex) + .map((polygon) => polygon.name) || []; + + return !otherPolygonNames.includes(value); + }, + { + message: "Zone name already exists on this camera.", + }, + ) + .refine( + (value: string) => { + return !value.includes("."); + }, + { + message: "Zone name must not contain a period.", + }, + ) + .refine((value: string) => /^[a-zA-Z0-9_-]+$/.test(value), { + message: "Zone name has an illegal character.", + }), + inertia: z.coerce + .number() + .min(1, { + message: "Inertia must be above 0.", + }) + .or(z.literal("")), + loitering_time: z.coerce + .number() + .min(0, { + message: "Loitering time must be greater than or equal to 0.", + }) + .optional() + .or(z.literal("")), + isFinished: z.boolean().refine(() => polygon?.isFinished === true, { + message: "The polygon drawing must be finished before saving.", }), - inertia: z.coerce - .number() - .min(1, { - message: "Inertia must be above 0.", - }) - .or(z.literal("")), - loitering_time: z.coerce - .number() - .min(0, { - message: "Loitering time must be greater than or equal to 0.", - }) - .optional() - .or(z.literal("")), - isFinished: z.boolean().refine(() => polygon?.isFinished === true, { - message: "The polygon drawing must be finished before saving.", - }), - objects: z.array(z.string()).optional(), - review_alerts: z.boolean().default(false).optional(), - review_detections: z.boolean().default(false).optional(), - }); + objects: z.array(z.string()).optional(), + review_alerts: z.boolean().default(false).optional(), + review_detections: z.boolean().default(false).optional(), + speedEstimation: z.boolean().default(false), + lineA: z.coerce + .number() + .min(0.1, { + message: "Distance must be greater than or equal to 0.1", + }) + .optional() + .or(z.literal("")), + lineB: z.coerce + .number() + .min(0.1, { + message: "Distance must be greater than or equal to 0.1", + }) + .optional() + .or(z.literal("")), + lineC: z.coerce + .number() + .min(0.1, { + message: "Distance must be greater than or equal to 0.1", + }) + .optional() + .or(z.literal("")), + lineD: z.coerce + .number() + .min(0.1, { + message: "Distance must be greater than or equal to 0.1", + }) + .optional() + .or(z.literal("")), + speed_threshold: z.coerce + .number() + .min(0.1, { + message: "Speed threshold must be greater than or equal to 0.1", + }) + .optional() + .or(z.literal("")), + }) + .refine( + (data) => { + if (data.speedEstimation) { + return !!data.lineA && !!data.lineB && !!data.lineC && !!data.lineD; + } + return true; + }, + { + message: "All distance fields must be filled to use speed estimation.", + path: ["speedEstimation"], + }, + ) + .refine( + (data) => { + // Prevent speed estimation when loitering_time is greater than 0 + return !( + data.speedEstimation && + data.loitering_time && + data.loitering_time > 0 + ); + }, + { + message: + "Zones with loitering times greater than 0 should not be used with speed estimation.", + path: ["loitering_time"], + }, + ); const form = useForm>({ resolver: zodResolver(formSchema), - mode: "onChange", + mode: "onBlur", defaultValues: { name: polygon?.name ?? "", inertia: @@ -155,9 +232,31 @@ export default function ZoneEditPane({ config?.cameras[polygon.camera]?.zones[polygon.name]?.loitering_time, isFinished: polygon?.isFinished ?? false, objects: polygon?.objects ?? [], + speedEstimation: !!(lineA || lineB || lineC || lineD), + lineA, + lineB, + lineC, + lineD, + speed_threshold: + polygon?.camera && + polygon?.name && + config?.cameras[polygon.camera]?.zones[polygon.name]?.speed_threshold, }, }); + useEffect(() => { + if ( + form.watch("speedEstimation") && + polygon && + polygon.points.length !== 4 + ) { + toast.error( + "Speed estimation has been disabled for this zone. Zones with speed estimation must have exactly 4 points.", + ); + form.setValue("speedEstimation", false); + } + }, [polygon, form]); + const saveToConfig = useCallback( async ( { @@ -165,6 +264,12 @@ export default function ZoneEditPane({ inertia, loitering_time, objects: form_objects, + speedEstimation, + lineA, + lineB, + lineC, + lineD, + speed_threshold, }: ZoneFormValuesType, // values submitted via the form objects: string[], ) => { @@ -261,9 +366,32 @@ export default function ZoneEditPane({ loiteringTimeQuery = `&cameras.${polygon?.camera}.zones.${zoneName}.loitering_time=${loitering_time}`; } + let distancesQuery = ""; + const distances = [lineA, lineB, lineC, lineD].filter(Boolean).join(","); + if (speedEstimation) { + distancesQuery = `&cameras.${polygon?.camera}.zones.${zoneName}.distances=${distances}`; + } else { + if (distances != "") { + distancesQuery = `&cameras.${polygon?.camera}.zones.${zoneName}.distances`; + } + } + + let speedThresholdQuery = ""; + if (speed_threshold >= 0 && speedEstimation) { + speedThresholdQuery = `&cameras.${polygon?.camera}.zones.${zoneName}.speed_threshold=${speed_threshold}`; + } else { + if ( + polygon?.camera && + polygon?.name && + config?.cameras[polygon.camera]?.zones[polygon.name]?.speed_threshold + ) { + speedThresholdQuery = `&cameras.${polygon?.camera}.zones.${zoneName}.speed_threshold`; + } + } + axios .put( - `config/set?cameras.${polygon?.camera}.zones.${zoneName}.coordinates=${coordinates}${inertiaQuery}${loiteringTimeQuery}${objectQueries}${alertQueries}${detectionQueries}`, + `config/set?cameras.${polygon?.camera}.zones.${zoneName}.coordinates=${coordinates}${inertiaQuery}${loiteringTimeQuery}${speedThresholdQuery}${distancesQuery}${objectQueries}${alertQueries}${detectionQueries}`, { requires_restart: 0 }, ) .then((res) => { @@ -456,6 +584,183 @@ export default function ZoneEditPane({ /> + + ( + +
+ +
+ + Speed Estimation + + { + if ( + checked && + polygons && + activePolygonIndex && + polygons[activePolygonIndex].points.length !== 4 + ) { + toast.error( + "Zones with speed estimation must have exactly 4 points.", + ); + return; + } + const loiteringTime = + form.getValues("loitering_time"); + + if (checked && loiteringTime && loiteringTime > 0) { + toast.error( + "Zones with loitering times greater than 0 should not be used with speed estimation.", + ); + } + field.onChange(checked); + }} + /> +
+
+
+ + Enable speed estimation for objects in this zone. The zone + must have exactly 4 points. + + +
+ )} + /> + + {form.watch("speedEstimation") && + polygons && + activePolygonIndex && + polygons[activePolygonIndex].points.length === 4 && ( + <> + ( + + + Line A distance ( + {config?.ui.unit_system == "imperial" + ? "feet" + : "meters"} + ) + + + setActiveLine(1)} + onBlur={() => setActiveLine(undefined)} + /> + + + )} + /> + ( + + + Line B distance ( + {config?.ui.unit_system == "imperial" + ? "feet" + : "meters"} + ) + + + setActiveLine(2)} + onBlur={() => setActiveLine(undefined)} + /> + + + )} + /> + ( + + + Line C distance ( + {config?.ui.unit_system == "imperial" + ? "feet" + : "meters"} + ) + + + setActiveLine(3)} + onBlur={() => setActiveLine(undefined)} + /> + + + )} + /> + ( + + + Line D distance ( + {config?.ui.unit_system == "imperial" + ? "feet" + : "meters"} + ) + + + setActiveLine(4)} + onBlur={() => setActiveLine(undefined)} + /> + + + )} + /> + + + ( + + + Speed Threshold ( + {config?.ui.unit_system == "imperial" ? "mph" : "kph"}) + + + + + + Specifies a minimum speed for objects to be considered + in this zone. + + + + )} + /> + + )} + { updateLabelFilter(currentLabels); - }, [currentLabels, updateLabelFilter]); + // we know that these deps are correct + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [currentLabels]); return ( <> diff --git a/web/src/pages/Explore.tsx b/web/src/pages/Explore.tsx index 90bea004a..c005c43c2 100644 --- a/web/src/pages/Explore.tsx +++ b/web/src/pages/Explore.tsx @@ -112,6 +112,8 @@ export default function Explore() { search_type: searchSearchParams["search_type"], min_score: searchSearchParams["min_score"], max_score: searchSearchParams["max_score"], + min_speed: searchSearchParams["min_speed"], + max_speed: searchSearchParams["max_speed"], has_snapshot: searchSearchParams["has_snapshot"], is_submitted: searchSearchParams["is_submitted"], has_clip: searchSearchParams["has_clip"], @@ -145,6 +147,8 @@ export default function Explore() { search_type: searchSearchParams["search_type"], min_score: searchSearchParams["min_score"], max_score: searchSearchParams["max_score"], + min_speed: searchSearchParams["min_speed"], + max_speed: searchSearchParams["max_speed"], has_snapshot: searchSearchParams["has_snapshot"], is_submitted: searchSearchParams["is_submitted"], has_clip: searchSearchParams["has_clip"], diff --git a/web/src/types/canvas.ts b/web/src/types/canvas.ts index f623e8b48..9c1748ce0 100644 --- a/web/src/types/canvas.ts +++ b/web/src/types/canvas.ts @@ -8,6 +8,7 @@ export type Polygon = { objects: string[]; points: number[][]; pointsOrder?: number[]; + distances: number[]; isFinished: boolean; color: number[]; }; @@ -18,6 +19,12 @@ export type ZoneFormValuesType = { loitering_time: number; isFinished: boolean; objects: string[]; + speedEstimation: boolean; + lineA: number; + lineB: number; + lineC: number; + lineD: number; + speed_threshold: number; }; export type ObjectMaskFormValuesType = { diff --git a/web/src/types/frigateConfig.ts b/web/src/types/frigateConfig.ts index 8acdc5396..794683adf 100644 --- a/web/src/types/frigateConfig.ts +++ b/web/src/types/frigateConfig.ts @@ -8,6 +8,7 @@ export interface UiConfig { strftime_fmt?: string; dashboard: boolean; order: number; + unit_system?: "metric" | "imperial"; } export interface BirdseyeConfig { @@ -223,9 +224,11 @@ export interface CameraConfig { zones: { [zoneName: string]: { coordinates: string; + distances: string[]; filters: Record; inertia: number; loitering_time: number; + speed_threshold: number; objects: string[]; color: number[]; }; diff --git a/web/src/types/search.ts b/web/src/types/search.ts index 1d8de1611..ca3c66be7 100644 --- a/web/src/types/search.ts +++ b/web/src/types/search.ts @@ -55,6 +55,8 @@ export type SearchResult = { ratio: number; type: "object" | "audio" | "manual"; description?: string; + average_estimated_speed: number; + velocity_angle: number; }; }; @@ -68,6 +70,8 @@ export type SearchFilter = { after?: number; min_score?: number; max_score?: number; + min_speed?: number; + max_speed?: number; has_snapshot?: number; has_clip?: number; is_submitted?: number; @@ -89,6 +93,8 @@ export type SearchQueryParams = { after?: string; min_score?: number; max_score?: number; + min_speed?: number; + max_speed?: number; search_type?: string; limit?: number; in_progress?: number; diff --git a/web/src/views/search/SearchView.tsx b/web/src/views/search/SearchView.tsx index e3995d7d9..adbc96413 100644 --- a/web/src/views/search/SearchView.tsx +++ b/web/src/views/search/SearchView.tsx @@ -158,6 +158,8 @@ export default function SearchView({ after: [formatDateToLocaleString(-5)], min_score: ["50"], max_score: ["100"], + min_speed: ["1"], + max_speed: ["150"], has_clip: ["yes", "no"], has_snapshot: ["yes", "no"], ...(config?.plus?.enabled && diff --git a/web/src/views/settings/MasksAndZonesView.tsx b/web/src/views/settings/MasksAndZonesView.tsx index ab2646b5f..4e649a3cd 100644 --- a/web/src/views/settings/MasksAndZonesView.tsx +++ b/web/src/views/settings/MasksAndZonesView.tsx @@ -61,6 +61,7 @@ export default function MasksAndZonesView({ ); const containerRef = useRef(null); const [editPane, setEditPane] = useState(undefined); + const [activeLine, setActiveLine] = useState(); const { addMessage } = useContext(StatusBarMessagesContext)!; @@ -161,6 +162,7 @@ export default function MasksAndZonesView({ ...(allPolygons || []), { points: [], + distances: [], isFinished: false, type, typeIndex: 9999, @@ -238,6 +240,8 @@ export default function MasksAndZonesView({ scaledWidth, scaledHeight, ), + distances: + zoneData.distances?.map((distance) => parseFloat(distance)) ?? [], isFinished: true, color: zoneData.color, }), @@ -267,6 +271,7 @@ export default function MasksAndZonesView({ scaledWidth, scaledHeight, ), + distances: [], isFinished: true, color: [0, 0, 255], })); @@ -290,6 +295,7 @@ export default function MasksAndZonesView({ scaledWidth, scaledHeight, ), + distances: [], isFinished: true, color: [128, 128, 128], })); @@ -316,6 +322,7 @@ export default function MasksAndZonesView({ scaledWidth, scaledHeight, ), + distances: [], isFinished: true, color: [128, 128, 128], }; @@ -391,6 +398,7 @@ export default function MasksAndZonesView({ setIsLoading={setIsLoading} onCancel={handleCancel} onSave={handleSave} + setActiveLine={setActiveLine} /> )} {editPane == "motion_mask" && ( @@ -653,6 +661,7 @@ export default function MasksAndZonesView({ activePolygonIndex={activePolygonIndex} hoveredPolygonIndex={hoveredPolygonIndex} selectedZoneMask={selectedZoneMask} + activeLine={activeLine} /> ) : (