"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo devolver matrices NumPy como imágenes usando FastAPI?

¿Cómo devolver matrices NumPy como imágenes usando FastAPI?

Publicado el 2024-11-14
Navegar:146

How to Return NumPy Arrays as Images Using FastAPI?

Cómo representar una matriz NumPy como una imagen en FastAPI

Problema: mostrar una matriz NumPy como una imagen en FastAPI

Solución:

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')
Declaración de liberación Este artículo se reproduce en: 1729687306 Si hay alguna infracción, comuníquese con [email protected] para eliminarlo.
Último tutorial Más>

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