Converter uma NumPy Array em imagem PIL em Python

Suraj Joshi 21 dezembro 2022
  1. Converter uma NumPy Array em imagem PIL em Python
  2. Converter um NumPy Array em PIL Image Python com o Matplotlib Colormap
Converter uma NumPy Array em imagem PIL em Python

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:

Converter um NumPy Array em PIL Image Python

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:

Converter um NumPy Array auto-criado para PIL Image Python

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:

Converter um NumPy Array em PIL Image Python aplicando Matplotlib Colormap

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 avatar Suraj Joshi avatar

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

LinkedIn

Artigo relacionado - Matplotlib Images