Various fixes (#17342)

* Remove imutils

* Ensure that state is maintained when setting search params

* Change script for version of setuptools

* Fix

* Fix
This commit is contained in:
Nicolas Mowen 2025-03-24 11:25:36 -06:00 committed by GitHub
parent 05d39f79b0
commit eabc316c7b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 29 additions and 12 deletions

View File

@ -108,7 +108,6 @@ imagestream
imdecode imdecode
imencode imencode
imread imread
imutils
imwrite imwrite
interp interp
iostat iostat

View File

@ -78,8 +78,9 @@ COPY docker/main/requirements-ov.txt /requirements-ov.txt
RUN apt-get -qq update \ RUN apt-get -qq update \
&& apt-get -qq install -y wget python3 python3-dev python3-distutils gcc pkg-config libhdf5-dev \ && apt-get -qq install -y wget python3 python3-dev python3-distutils gcc pkg-config libhdf5-dev \
&& wget -q https://bootstrap.pypa.io/get-pip.py -O get-pip.py \ && wget -q https://bootstrap.pypa.io/get-pip.py -O get-pip.py \
&& sed -i 's/args.append("setuptools")/args.append("setuptools==77.0.3")/' get-pip.py \
&& python3 get-pip.py "pip" \ && python3 get-pip.py "pip" \
&& pip install -r /requirements-ov.txt && pip3 install -r /requirements-ov.txt
# Get OpenVino Model # Get OpenVino Model
RUN --mount=type=bind,source=docker/main/build_ov_model.py,target=/build_ov_model.py \ RUN --mount=type=bind,source=docker/main/build_ov_model.py,target=/build_ov_model.py \
@ -172,6 +173,7 @@ RUN apt-get -qq update \
RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 1 RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 1
RUN wget -q https://bootstrap.pypa.io/get-pip.py -O get-pip.py \ RUN wget -q https://bootstrap.pypa.io/get-pip.py -O get-pip.py \
&& sed -i 's/args.append("setuptools")/args.append("setuptools==77.0.3")/' get-pip.py \
&& python3 get-pip.py "pip" && python3 get-pip.py "pip"
COPY docker/main/requirements.txt /requirements.txt COPY docker/main/requirements.txt /requirements.txt
@ -235,6 +237,7 @@ ENV DEFAULT_FFMPEG_VERSION="7.0"
ENV INCLUDED_FFMPEG_VERSIONS="${DEFAULT_FFMPEG_VERSION}:5.0" ENV INCLUDED_FFMPEG_VERSIONS="${DEFAULT_FFMPEG_VERSION}:5.0"
RUN wget -q https://bootstrap.pypa.io/get-pip.py -O get-pip.py \ RUN wget -q https://bootstrap.pypa.io/get-pip.py -O get-pip.py \
&& sed -i 's/args.append("setuptools")/args.append("setuptools==77.0.3")/' get-pip.py \
&& python3 get-pip.py "pip" && python3 get-pip.py "pip"
RUN --mount=type=bind,from=wheels,source=/wheels,target=/deps/wheels \ RUN --mount=type=bind,from=wheels,source=/wheels,target=/deps/wheels \

View File

@ -7,7 +7,6 @@ starlette-context == 0.3.6
fastapi == 0.115.* fastapi == 0.115.*
uvicorn == 0.30.* uvicorn == 0.30.*
slowapi == 0.1.* slowapi == 0.1.*
imutils == 0.5.*
joserfc == 1.0.* joserfc == 1.0.*
pathvalidate == 3.2.* pathvalidate == 3.2.*
markupsafe == 3.0.* markupsafe == 3.0.*

View File

@ -39,6 +39,7 @@ WORKDIR /opt/frigate
COPY --from=rootfs / / COPY --from=rootfs / /
RUN wget -q https://bootstrap.pypa.io/get-pip.py -O get-pip.py \ RUN wget -q https://bootstrap.pypa.io/get-pip.py -O get-pip.py \
&& sed -i 's/args.append("setuptools")/args.append("setuptools==77.0.3")/' get-pip.py \
&& python3 get-pip.py "pip" --break-system-packages && python3 get-pip.py "pip" --break-system-packages
RUN python3 -m pip config set global.break-system-packages true RUN python3 -m pip config set global.break-system-packages true

View File

@ -9,9 +9,9 @@ ARG DEBIAN_FRONTEND
# Add deadsnakes PPA for python3.11 # Add deadsnakes PPA for python3.11
RUN apt-get -qq update && \ RUN apt-get -qq update && \
apt-get -qq install -y --no-install-recommends \ apt-get -qq install -y --no-install-recommends \
software-properties-common \ software-properties-common \
&& add-apt-repository ppa:deadsnakes/ppa && add-apt-repository ppa:deadsnakes/ppa
# Use a separate container to build wheels to prevent build dependencies in final image # Use a separate container to build wheels to prevent build dependencies in final image
RUN apt-get -qq update \ RUN apt-get -qq update \
@ -24,6 +24,7 @@ RUN apt-get -qq update \
RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 1 RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 1
RUN wget -q https://bootstrap.pypa.io/get-pip.py -O get-pip.py \ RUN wget -q https://bootstrap.pypa.io/get-pip.py -O get-pip.py \
&& sed -i 's/args.append("setuptools")/args.append("setuptools==77.0.3")/' get-pip.py \
&& python3 get-pip.py "pip" && python3 get-pip.py "pip"
FROM build-wheels AS trt-wheels FROM build-wheels AS trt-wheels

View File

@ -1,9 +1,9 @@
import cv2 import cv2
import imutils
import numpy as np import numpy as np
from frigate.config import MotionConfig from frigate.config import MotionConfig
from frigate.motion import MotionDetector from frigate.motion import MotionDetector
from frigate.util.image import grab_cv2_contours
class FrigateMotionDetector(MotionDetector): class FrigateMotionDetector(MotionDetector):
@ -103,7 +103,7 @@ class FrigateMotionDetector(MotionDetector):
contours = cv2.findContours( contours = cv2.findContours(
thresh_dilated, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE thresh_dilated, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE
) )
contours = imutils.grab_contours(contours) contours = grab_cv2_contours(contours)
# loop over the contours # loop over the contours
for c in contours: for c in contours:

View File

@ -1,7 +1,6 @@
import logging import logging
import cv2 import cv2
import imutils
import numpy as np import numpy as np
from scipy.ndimage import gaussian_filter from scipy.ndimage import gaussian_filter
@ -9,6 +8,7 @@ from frigate.camera import PTZMetrics
from frigate.comms.config_updater import ConfigSubscriber from frigate.comms.config_updater import ConfigSubscriber
from frigate.config import MotionConfig from frigate.config import MotionConfig
from frigate.motion import MotionDetector from frigate.motion import MotionDetector
from frigate.util.image import grab_cv2_contours
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -147,7 +147,7 @@ class ImprovedMotionDetector(MotionDetector):
contours = cv2.findContours( contours = cv2.findContours(
thresh_dilated, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE thresh_dilated, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE
) )
contours = imutils.grab_contours(contours) contours = grab_cv2_contours(contours)
# loop over the contours # loop over the contours
total_contour_area = 0 total_contour_area = 0

View File

@ -265,6 +265,19 @@ def draw_box_with_label(
) )
def grab_cv2_contours(cnts):
# if the length the contours tuple returned by cv2.findContours
# is '2' then we are using either OpenCV v2.4, v4-beta, or
# v4-official
if len(cnts) == 2:
return cnts[0]
# if the length of the contours tuple is '3' then we are using
# either OpenCV v3, v4-pre, or v4-alpha
elif len(cnts) == 3:
return cnts[1]
def is_label_printable(label) -> bool: def is_label_printable(label) -> bool:
"""Check if label is printable.""" """Check if label is printable."""
return not bool(set(label) - set(printable)) return not bool(set(label) - set(printable))

View File

@ -109,6 +109,7 @@ export function useSearchEffect(
key: string, key: string,
callback: (value: string) => boolean, callback: (value: string) => boolean,
) { ) {
const location = useLocation();
const [searchParams, setSearchParams] = useSearchParams(); const [searchParams, setSearchParams] = useSearchParams();
const param = useMemo(() => { const param = useMemo(() => {
@ -129,7 +130,7 @@ export function useSearchEffect(
const remove = callback(param[1]); const remove = callback(param[1]);
if (remove) { if (remove) {
setSearchParams(undefined, { replace: true }); setSearchParams(undefined, { state: location.state, replace: true });
} }
}, [param, callback, setSearchParams]); }, [param, location.state, callback, setSearchParams]);
} }