Converter uma NumPy Array em imagem PIL em Python
- Converter uma NumPy Array em imagem PIL em Python
- Converter um NumPy Array em PIL Image Python com o Matplotlib Colormap
Este tutorial explica como podemos converter a matriz NumPy para uma imagem PIL usando Image.fromarray() do pacote PIL. A biblioteca Python Imaging Library (PIL) é uma biblioteca em Python com várias funções de processamento de imagem.
A função Image.fromarray() toma o objecto array como entrada e retorna o objecto de imagem feito a partir do objecto array.
Converter uma NumPy Array em imagem PIL em 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()
Resultado:

Irá ler a imagem lena.png no directório de trabalho actual utilizando o método open() do método Image e devolver um objecto de imagem.
Convertemos então este objecto de imagem para um array NumPy utilizando o método numpy.array().
Utilizamos a função Image.fromarray() para converter o array de volta para o objecto de imagem PIL e finalmente exibimos o objecto de imagem utilizando o 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()
Resultado:

Aqui, criamos um array NumPy de tamanho 400x400 com números aleatórios que vão de 0 a 255 e depois convertemos a matriz para um objecto Image utilizando a função Image.fromarray() e exibimos a imagem utilizando o método show().
Converter um NumPy Array em PIL Image Python com o Matplotlib Colormap
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()
Resultado:

Aplica o mapa de cores plasma do pacote Matplotlib. Para aplicar um mapa de cores a uma imagem, primeiro normalizamos a matriz com um valor máximo de 1. O valor máximo do elemento em image_array é de 255 no exemplo acima. Assim, dividimos a image_array por 255 para normalização.
Aplicamos então o mapa de cores à image_array e multiplicamo-lo por 255 novamente. Depois, convertemos os elementos para o formato int utilizando o método np.uint8(). Finalmente, convertemos o array para a imagem utilizando a função Image.fromarray().
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn