Matplotlib imread em Python
O artigo explica como podemos ler um ficheiro de imagem para um array utilizando o método imread()
a partir do pacote Matplotlib.
matplotlib.pyplot.imread()
O matplotlib.pyplot.imread()
lê uma imagem de um ficheiro para um array.
Sintaxe
matplotlib.pyplot.imread(fname, format=None)
Aqui, fname
representa o nome do ficheiro de imagem a ler, e format
representa o formato do ficheiro de imagem. Se format=None
a função extrairá o formato do nome do ficheiro.
A função retorna um array com a forma MxN
para imagens em escala de cinzentos, MxNx3
para imagens RGB, e MxNx4
para imagens RGBA
, onde M
é a largura e N
é a altura da imagem.
Exemplo: Ler imagens utilizando a função matplotlib.pyplot.imread()
Função
import numpy as np
import matplotlib.pyplot as plt
img_array = plt.imread("lena.png")
plt.imshow(img_array)
plt.title("Display Image read using imread()")
plt.axis("off")
plt.show()
Resultado:
Lê a imagem lena.png
no directório de trabalho actual num array utilizando o método imread()
e depois mostra a imagem utilizando o método imshow()
.
Por defeito, tem X-eixo e Y-eixo com ticks na imagem exibida. Para remover os eixos e carrapatos, utilizamos a declaração plt.axis('off')
. Finalmente, utilizamos a função matplotlib.pyplot.show()
para mostrar a imagem.
Podemos ver a forma do array da imagem utilizando o atributo shape
.
import matplotlib.pyplot as plt
img_array = plt.imread("lena.png")
print(img_array.shape)
Resultado:
(330, 330, 3)
Imprime a forma da imagem - (330, 330, 3)
, representando um array de imagem tridimensional de largura como 330, altura como 330, e 3 canais.
Exemplo: Clip Imagens Utilizando o matplotlib.pyplot.imread()
Função
Depois de matplotlib.pyplot.imread()
ler uma imagem num array NumPy, podemos recortar a imagem indexando a matriz utilizando o operador :
.
import matplotlib.pyplot as plt
img_array = plt.imread("lena.png")[50:300, 30:300]
plt.imshow(img_array)
plt.axis("off")
plt.title("Clipped Image")
plt.show()
Resultado:
Aqui, o método imread()
lê a imagem completa num array, e seleccionamos apenas os elementos da posição 50 a 300 em largura e os elementos da posição 30 a 300 em altura e armazenamos a matriz indexada em img_array
. Depois exibimos o array indexada utilizando a função imshow()
.
import matplotlib.pyplot as plt
import matplotlib.patches as patches
img_array = plt.imread("lena.png")
fig, ax = plt.subplots()
im = ax.imshow(img_array)
patch = patches.Circle((160, 160), radius=150, transform=ax.transData)
im.set_clip_path(patch)
ax.axis("off")
plt.show()
Resultado:
Exibe a imagem recortada utilizando um adesivo circular. Aqui, recortamos a imagem utilizando um remendo circular com o centro em (160, 160)
e o raio em 150.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn