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