From c81b8fd72c382a4cd3c9084b8f9134d214592c9a Mon Sep 17 00:00:00 2001 From: claude Date: Fri, 26 Jun 2026 15:52:06 +0300 Subject: [PATCH] =?UTF-8?q?OPi:=20=D1=81=D0=BB=D0=B0=D1=82=D1=8C=20=D0=BD?= =?UTF-8?q?=D0=B0=D1=82=D0=B8=D0=B2=D0=BD=D1=8B=D0=B9=20=D0=BA=D0=B0=D0=B4?= =?UTF-8?q?=D1=80=20=D0=B1=D0=B5=D0=B7=20=D1=83=D0=B6=D0=B0=D1=82=D0=B8?= =?UTF-8?q?=D1=8F=20(=D1=81=D0=B5=D1=80=D0=B2=D0=B5=D1=80=20=D0=BA=D1=80?= =?UTF-8?q?=D0=BE=D0=BF=D0=B0=D0=B5=D1=82=20=D0=B7=D0=BE=D0=BD=D1=83=20?= =?UTF-8?q?=D0=BD=D0=BE=D0=BC=D0=B5=D1=80=D0=B0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 3 +++ orange_pi/scales.py | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 52c8841..3a4faae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -88,3 +88,6 @@ - orange_pi/scales.py: при стабилизации веса снимает кадр с RTSP-камеры (ffmpeg) и шлёт на scales.zeroday.su/api/capture в фоновом потоке - grab_test.py: разовый тест камеры → сервер - сервер распознаёт номер через aiprimetech.io (claude-haiku-4-5 + fallback sonnet-4-6) и кладёт фото+номер рядом с весом + +## 2026-06-26 — OPi шлёт нативный кадр (2560x1440) +- grab_frame: убран scale=1280, отдаём полный кадр; сервер сам кропает зону номера, делает автоконтраст и распознаёт жёлтые/белые номера diff --git a/orange_pi/scales.py b/orange_pi/scales.py index 2e88c26..ef3afe2 100644 --- a/orange_pi/scales.py +++ b/orange_pi/scales.py @@ -187,9 +187,10 @@ def publish_weight(w): def grab_frame(): """Снимает один кадр с RTSP-камеры через ffmpeg. Возвращает JPEG-байты или None.""" + # шлём НАТИВНЫЙ кадр (2560x1440) без ужатия — сервер сам вырежет зону номера и распознает cmd = ['ffmpeg', '-y', '-loglevel', 'error', '-rtsp_transport', 'tcp', '-i', RTSP_URL, '-frames:v', '1', '-update', '1', - '-vf', 'scale=1280:-2', '-q:v', '4', '-f', 'image2', FRAME_PATH] + '-q:v', '2', '-f', 'image2', FRAME_PATH] try: subprocess.run(cmd, timeout=15, check=True) with open(FRAME_PATH, 'rb') as f: