File size: 719 Bytes
a926bbe
 
 
2021572
 
 
 
 
 
 
a926bbe
 
 
 
2021572
a926bbe
 
 
2021572
a926bbe
 
2021572
a926bbe
 
2021572
a926bbe
2021572
a926bbe
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
from fastapi import FastAPI, UploadFile, File
from fastapi.responses import HTMLResponse, Response
import numpy as np
import cv2
from ultralytics import YOLO

app = FastAPI()

model = YOLO("detection.pt")

@app.get("/", response_class=HTMLResponse)
def home():
    with open("index.html", "r") as f:
        return f.read()

@app.post("/detect")
async def detect(file: UploadFile = File(...)):
    contents = await file.read()

    nparr = np.frombuffer(contents, np.uint8)
    frame = cv2.imdecode(nparr, cv2.IMREAD_COLOR)

    results = model(frame)
    annotated_frame = results[0].plot()

    _, buffer = cv2.imencode(".jpg", annotated_frame)

    return Response(content=buffer.tobytes(), media_type="image/jpeg")