Converter uma NumPy Array em imagem PIL em Python

  1. Converter uma NumPy Array em imagem PIL em Python
  2. 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:

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().

Artigo relacionado - Matplotlib Images

  • Matplotlib imread em Python
  • Mostrar uma imagem em escala de cinzentos em Matplotlib