Python 中將 NumPy 陣列轉換為 PIL 影象
本教程解釋了我們如何使用 PIL
包中的 Image.fromarray()
將 NumPy 陣列轉換為 PIL
影象。Python Imaging Library (PIL
)是 Python 中一個具有各種影象處理功能的庫。
Image.fromarray()
函式將陣列物件作為輸入,並返回由陣列物件製作的影象物件。
在 Python 中把一個 NumPy 陣列轉換為 PIL 影象
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()
輸出:
它將使用 open()
方法從 Image
中讀取當前工作目錄下的影象 lena.png
,並返回一個影象物件。
然後我們使用 numpy.array()
方法將這個影象物件轉換為一個 NumPy 陣列。
我們使用 Image.fromarray()
函式將該陣列轉換回 PIL
影象物件,最後使用 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()
輸出:
在這裡,我們建立一個大小為 400x400 的 NumPy 陣列,其隨機數範圍為 0
到 255
,然後使用 Image.fromarray()
函式將陣列轉換為 Image
物件,並使用 show()
方法顯示 image
。
用 Matplotlib Colormap 將 NumPy 陣列轉換為 PIL 影象 Python
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()
輸出:
它應用了 Matplotlib
包中的 plasma
colormap。要將一個 colormap 應用到一個影象上,我們首先要將 array
歸一化,最大值為 1
。在上面的例子中,image_array
中元素的最大值是 255
。因此,我們將 image_array
除以 255 進行歸一化。
然後,我們將 colormap 應用到 image_array
中,並再次乘以 255
。然後,我們使用 np.uint8()
方法將元素轉換為 int
格式。最後,我們使用 Image.fromarray()
函式將陣列轉換為影象。
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn