Para exibir um array NumPy como uma imagem no FastAPI, você tem duas opções principais:
Opção 1: Retornar imagem como bytes
Essa abordagem envolve converter a matriz NumPy em bytes usando a biblioteca PIL ou OpenCV e, em seguida, retornar os bytes como uma resposta personalizada com os cabeçalhos apropriados.
Usando PIL:
# Convert NumPy array to bytes using PIL
from PIL import Image
import io
arr = np.zeros((512, 512, 3), dtype=np.uint8) # Sample RGB image
buf = BytesIO()
im = Image.fromarray(arr)
im.save(buf, format='PNG')
im_bytes = buf.getvalue()
# Return bytes as a Response with appropriate headers
from fastapi import Response
headers = {'Content-Disposition': 'inline; filename="test.png"'}
return Response(im_bytes, headers=headers, media_type='image/png')
Usando OpenCV:
# Convert NumPy array to bytes using OpenCV
import cv2
arr = np.zeros((512, 512, 3), dtype=np.uint8) # Sample RGB image
arr = cv2.cvtColor(arr, cv2.COLOR_RGB2BGR)
success, im = cv2.imencode('.png', arr)
# Return bytes as a Response with appropriate headers
from fastapi import Response
headers = {'Content-Disposition': 'inline; filename="test.png"'}
return Response(im.tobytes(), headers=headers, media_type='image/png')
Opção 2: Retornar imagem como matriz NumPy codificada em JSON
Essa abordagem não é recomendada para fins de exibição, mas pode ser usada para transferência de dados.
Usando PIL:
import numpy as np
import json
# Convert NumPy array to JSON-encoded string
arr = np.zeros((512, 512, 3), dtype=np.uint8) # Sample RGB image
json_data = json.dumps(arr.tolist())
Usando OpenCV:
import numpy as np
import cv2
import json
# Convert NumPy array to JSON-encoded string
arr = np.zeros((512, 512, 3), dtype=np.uint8) # Sample RGB image
json_data = json.dumps(arr.tolist()).replace('-1', '255')
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3