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: