Para mostrar una matriz NumPy como una imagen en FastAPI, tiene dos opciones principales:
Opción 1: Devolver imagen como bytes
Este enfoque implica convertir la matriz NumPy en bytes usando la biblioteca PIL u OpenCV y luego devolviendo los bytes como una respuesta personalizada con los encabezados apropiados.
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')
Opción 2: Devolver imagen como matriz NumPy codificada en JSON
Este enfoque no se recomienda para fines de visualización, pero se puede utilizar para la transferencia de datos.
Uso de 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')
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3