Preview webcam pendant capture DSLR (pas de freeze entre les poses)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-08 08:37:38 +02:00
parent 7df190b5bc
commit cb102c9e4b

View File

@@ -5,6 +5,8 @@ import logging
from pathlib import Path from pathlib import Path
from contextlib import asynccontextmanager from contextlib import asynccontextmanager
import cv2
from fastapi import FastAPI, WebSocket, WebSocketDisconnect, UploadFile, File from fastapi import FastAPI, WebSocket, WebSocketDisconnect, UploadFile, File
from fastapi.responses import FileResponse, JSONResponse from fastapi.responses import FileResponse, JSONResponse
from fastapi.staticfiles import StaticFiles from fastapi.staticfiles import StaticFiles
@@ -506,7 +508,15 @@ async def traiter_message_ws(msg: dict, ws: WebSocket):
if type_msg == "ping": if type_msg == "ping":
await ws.send_json({"type": "pong"}) await ws.send_json({"type": "pong"})
elif type_msg == "preview": elif type_msg == "preview":
donnees = camera.preview() # Pendant une capture DSLR, utiliser directement la webcam fallback
donnees = None
if capture_en_cours and camera._preview_webcam_fallback:
ret, frame = camera._preview_webcam_fallback.read()
if ret:
_, buf = cv2.imencode(".jpg", frame, [cv2.IMWRITE_JPEG_QUALITY, 70])
donnees = buf.tobytes()
else:
donnees = camera.preview()
if donnees: if donnees:
b64 = base64.b64encode(donnees).decode("ascii") b64 = base64.b64encode(donnees).decode("ascii")
await ws.send_json({"type": "preview", "image": f"data:image/jpeg;base64,{b64}"}) await ws.send_json({"type": "preview", "image": f"data:image/jpeg;base64,{b64}"})