How to Read Images using imread in Python Matplotlib
The article explains how we can read an image file into an array using the imread() method from the Matplotlib package.
matplotlib.pyplot.imread()
The matplotlib.pyplot.imread() reads an image from a file into an array.
Syntax
matplotlib.pyplot.imread(fname, format=None)
Here, fname represents the name of the image file to be read, and format represents the image file format. If format=None the function will extract the format from the filename.
The function returns an array with the shape MxN for grayscale images, MxNx3 for RGB images, and MxNx4 for RGBA images, where M is the width and N is the height of the image.
Example: Read Images Using the matplotlib.pyplot.imread() Function
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()
Output:

It reads the image lena.png in the current working directory into an array using the imread() method and then displays the image using the imshow() method.
By default, it has X-axis and Y-axis with ticks in the displayed image. To remove the axes and ticks, we use the statement plt.axis('off'). Finally, we use the matplotlib.pyplot.show() function to show the image.
We can view the shape of the image array using the shape attribute.
import matplotlib.pyplot as plt
img_array = plt.imread("lena.png")
print(img_array.shape)
Output:
(330, 330, 3)
It prints the shape of the image - (330, 330, 3), representing a 3-dimensional image array of width as 330, height as 330, and 3 channels.
Example: Clip Images Using the matplotlib.pyplot.imread() Function
After matplotlib.pyplot.imread() reads an image into a NumPy array, we can clip the image by indexing the array using the : operator.
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()
Output:

Here, the imread() method reads the full image into an array, and we only select the elements from position 50 to 300 in width and elements from position 30 to 300 in height and stores the indexed array in img_array. We then display the indexed array using the imshow() function.
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()
Output:

It displays the image clipped using a circular patch. Here, we clip the image using a circular patch with the center at (160, 160) and radius as 150.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn