Convertir un array de NumPy en una imagen PIL en Python

Suraj Joshi 21 diciembre 2022
  1. Convertir un array NumPy en una imagen PIL en Python
  2. Convertir un array NumPy en una imagen PIL Python con el Colormap Matplotlib
Convertir un array de NumPy en una imagen PIL en Python

Este tutorial explica cómo podemos convertir el array NumPy en una imagen PIL usando la Image.fromarray() del paquete PIL. La Librería de Imágenes de Python (PIL) es una librería en Python con varias funciones de procesamiento de imágenes.

La función Image.fromarray() toma el objeto array como entrada y devuelve el objeto imagen hecho del objeto array.

Convertir un array NumPy en una imagen PIL en Python

import numpy as np
from PIL import Image

image = Image.open("lena.png")
np_array = np.array(image)

pil_image = Image.fromarray(np_array)
pil_image.show()

Producción:

Convertir un array de NumPy en una imagen PIL Python

Leerá la imagen lena.png en el directorio de trabajo actual usando el método open() de la Image y devolverá un objeto de la imagen.

Luego convertimos este objeto de la imagen en un array NumPy usando el método numpy.array().

Usamos la función Image.fromarray() para convertir el array de nuevo en el objeto de imagen PIL y finalmente mostramos el objeto de imagen usando el método show().

import numpy as np
from PIL import Image

array = np.random.randint(255, size=(400, 400), dtype=np.uint8)
image = Image.fromarray(array)
image.show()

Producción:

Convertir un array NumPy autocreado en una imagen PIL Python

Aquí, creamos un array NumPy de tamaño 400x400 con números aleatorios que van de 0 a 255 y luego convertimos el array en un objeto “Imagen” usando la función Image.fromarray() y mostramos la imagen usando el método show().

Convertir un array NumPy en una imagen PIL Python con el Colormap Matplotlib

import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
from matplotlib import cm

image_array = plt.imread("lena.jpg")
image_array = image_array / 255
image = Image.fromarray(np.uint8(cm.plasma(image_array) * 255))
image.show()

Producción:

Convertir un array NumPy a imagen PIL Python aplicando Matplotlib Colormap

Aplica el mapa de colores de plasma del paquete Matplotlib. Para aplicar un mapa de color a una imagen, primero normalizamos el array con un valor máximo de 1. El valor máximo del elemento en image_array es 255 en el ejemplo anterior. Así que dividimos el image_array por 255 para la normalización.

Luego aplicamos el mapa de colores a la image_array y lo multiplicamos por 255 de nuevo. Luego, convertimos los elementos al formato int usando el método np.uint8(). Finalmente, convertimos el array en la imagen usando la función Image.fromarray().

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Artículo relacionado - Matplotlib Images