отправка и прием изображений через Fast Api
Помогите разобраться с кодом. и понимаю есть еще и другие способы. копаюсь ничего не выходит. привык по подобной форме текст пересылать а тут "Вход: byte octet-stream c картинкой".
Только и выдает 422 Unprocessable Entity
# Со стороны сервера
from pydantic import BaseModel
from api import model
from fastapi import FastAPI
import numpy as np
import base64
import cv2
import time
class UserRequestIn(BaseModel):
file: bytes
class PredictionOut(BaseModel):
text: str
model = model.MODEL()
# Determining how queries work
app = FastAPI()
@app.get("/health_check")
def health_check():
return {"code": 200, "status": "OK"}
@app.post("/api/predict", response_model = dto.PredictionOut)
async def answer(user_request: dto.UserRequestIn):
image = base64.b64decode(await user_request.json()["data"][len('data:application/octet-stream;base64,'):])/255
image = np.frombuffer(image, dtype=np.uint8)
image = cv2.imdecode(image, flags=1)
text, id = model.predict([image])
ts = time.time()
return {"text": text, "id": id, 'ts': ts, "image": user_request.json()['files']}
# Со стороны отправителя
import requests
with open('0.jpg', 'rb') as f:
img = f.read()
r = requests.post(url='http://192.168.1.7:8002/api/predict',
files = {'file': img},
headers={'Content-Type': 'application/octet-stream'})