Spaces:
Sleeping
Sleeping
File size: 1,215 Bytes
f53e27e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
from fastapi import FastAPI, UploadFile, File
from fastapi.responses import FileResponse
import cv2
import subprocess
import uuid
import os
app = FastAPI()
def detect_product_in_frame(frame):
return (100, 50, 400, 400)
@app.post("/process_video/")
async def process_video(file: UploadFile = File(...)):
input_filename = f"input_{uuid.uuid4()}.mp4"
with open(input_filename, "wb") as f:
f.write(await file.read())
cap = cv2.VideoCapture(input_filename)
success, frame = cap.read()
if not success:
return {"error": "Não foi possível ler o vídeo."}
roi_box = detect_product_in_frame(frame)
cap.release()
output_filename = f"output_{uuid.uuid4()}.mp4"
if roi_box:
x, y, w, h = roi_box
crop_cmd = [
'ffmpeg',
'-i', input_filename,
'-vf', f"crop={w}:{h}:{x}:{y}",
'-c:a', 'copy',
output_filename
]
subprocess.run(crop_cmd)
os.remove(input_filename)
return FileResponse(output_filename, media_type="video/mp4", filename="cropped_video.mp4")
else:
return {"error": "Não foi possível detectar o produto para realizar o crop."}
|