mirror of
https://github.com/blakeblackshear/frigate.git
synced 2024-11-21 19:07:46 +01:00
Warn users when creating large motion masks (#13435)
This commit is contained in:
parent
4ec136cab0
commit
a8dcc87019
@ -73,6 +73,29 @@ export default function MotionMaskEditPane({
|
|||||||
return `Motion Mask ${count + 1}`;
|
return `Motion Mask ${count + 1}`;
|
||||||
}, [polygons]);
|
}, [polygons]);
|
||||||
|
|
||||||
|
const polygonArea = useMemo(() => {
|
||||||
|
if (polygon && polygon.isFinished && scaledWidth && scaledHeight) {
|
||||||
|
const points = interpolatePoints(
|
||||||
|
polygon.points,
|
||||||
|
scaledWidth,
|
||||||
|
scaledHeight,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
);
|
||||||
|
|
||||||
|
const n = points.length;
|
||||||
|
let area = 0;
|
||||||
|
|
||||||
|
for (let i = 0; i < n; i++) {
|
||||||
|
const [x1, y1] = points[i];
|
||||||
|
const [x2, y2] = points[(i + 1) % n];
|
||||||
|
area += x1 * y2 - y1 * x2;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Math.abs(area) / 2;
|
||||||
|
}
|
||||||
|
}, [polygon, scaledWidth, scaledHeight]);
|
||||||
|
|
||||||
const formSchema = z
|
const formSchema = z
|
||||||
.object({
|
.object({
|
||||||
polygon: z.object({ name: z.string(), isFinished: z.boolean() }),
|
polygon: z.object({ name: z.string(), isFinished: z.boolean() }),
|
||||||
@ -238,6 +261,28 @@ export default function MotionMaskEditPane({
|
|||||||
|
|
||||||
<Separator className="my-3 bg-secondary" />
|
<Separator className="my-3 bg-secondary" />
|
||||||
|
|
||||||
|
{polygonArea && polygonArea >= 0.35 && (
|
||||||
|
<>
|
||||||
|
<div className="mb-3 text-sm text-danger">
|
||||||
|
The motion mask is covering {Math.round(polygonArea * 100)}% of the
|
||||||
|
camera frame. Large motion masks are not recommended.
|
||||||
|
</div>
|
||||||
|
<div className="mb-3 text-sm text-primary">
|
||||||
|
Motion masks do not prevent objects from being detected. You should
|
||||||
|
use a required zone instead.
|
||||||
|
<Link
|
||||||
|
to="https://github.com/blakeblackshear/frigate/discussions/13040"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
className="my-3 block"
|
||||||
|
>
|
||||||
|
Read the documentation{" "}
|
||||||
|
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
|
||||||
<Form {...form}>
|
<Form {...form}>
|
||||||
<form
|
<form
|
||||||
onSubmit={form.handleSubmit(onSubmit)}
|
onSubmit={form.handleSubmit(onSubmit)}
|
||||||
|
Loading…
Reference in New Issue
Block a user