File size: 1,067 Bytes
aa25f09
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from fastapi import FastAPI, HTTPException
import random
from pydantic import BaseModel
from typing import List
from utils import decode_image
from mediapipe_preprocess import mediapipe_process
from model_predict import model_predict
import numpy as np

class Item(BaseModel):
    text: str
    number: int | None = None

class RecordFrames(BaseModel):
    images: List[str]

app = FastAPI()

@app.get("/")
def return_hello():
    return {"text":"Hello from server"}

@app.get("/random")
def return_random():
    return {"random number":int(random.random()*1000)}

@app.post("/receive")
def return_received(item: Item):
    return {"text":item.text,
            "number":item.number}

@app.post("/predict")
def return_predict(record: RecordFrames):
    if not record.images:
        raise HTTPException(status_code=400, detail="No images provided")
    
    frames = [np.array(decode_image(img)) for img in record.images] 
    keypoints = mediapipe_process(frames)
    label = model_predict(keypoints)
    return {"label":label}