Matplotlib 中的 Imread

Suraj Joshi 2021年2月7日 2020年12月31日
Matplotlib 中的 Imread

這篇文章解釋了我們如何使用 Matplotlib 包中的 imread() 方法將一個影象檔案讀到一個陣列中。

matplotlib.pyplot.imread()

matplotlib.pyplot.imread() 將檔案中的影象讀入一個陣列。

語法

matplotlib.pyplot.imread(fname, 
                         format=None)

這裡,fname 代表要讀取的影象檔案的名稱,format 代表影象檔案的格式。如果 format=None 函式將從檔名中提取格式。

函式返回一個陣列,灰度影象為 MxN,RGB 影象為 MxNx3,RGBA 影象為 MxNx4,其中 M 是影象的寬度,N 是影象的高度。

示例: 使用 matplotlib.pyplot.imread() 函式讀取影象

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

輸出:

使用 imread 方法讀取影象

它使用 imread() 方法將當前工作目錄下的影象 lena.png 讀入陣列,然後使用 imshow() 方法顯示影象。

預設情況下,它在顯示的影象中有 X 軸Y 軸,並帶有刻度線。要刪除軸和刻度,我們使用 plt.axis('off') 語句。最後,我們使用 matplotlib.pyplot.show() 函式來顯示影象。

我們可以使用 shape 屬性來檢視影象陣列的形狀。

import matplotlib.pyplot as plt 
  
img_array=plt.imread("lena.png") 
print(img_array.shape)

輸出:

(330, 330, 3)

它列印影象的形狀-(330, 330, 3),代表一個三維影象陣列,寬度為 330,高度為 330,有 3 個通道。

示例:使用 matplotlib.pyplot.imread() 函式剪輯影象

matplotlib.pyplot.imread() 將影象讀入 NumPy 陣列後,我們可以通過使用:操作符對陣列進行索引來剪輯影象。

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

輸出:

使用 imread 方法剪輯影象

在這裡,imread() 方法將完整的影象讀取到一個陣列中,我們只選擇寬度為 50 到 300 位置的元素和高度為 30 到 300 位置的元素,並將索引陣列儲存在 img_array 中。然後我們使用 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()

輸出:

使用 imread 方法得到的圓形影象

它顯示的是使用圓形補丁剪下的影象。在這裡,我們使用圓形補丁剪裁影象,中心為 (160, 160),半徑為 150。

Author: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

相關文章 - Matplotlib Images