Python 中將 NumPy 陣列轉換為 PIL 影象

Suraj Joshi 2023年1月30日
  1. 在 Python 中把一個 NumPy 陣列轉換為 PIL 影象
  2. 用 Matplotlib Colormap 將 NumPy 陣列轉換為 PIL 影象 Python
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()

輸出:

將 NumPy 陣列轉換為 PIL 影象 Python

它將使用 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()

輸出:

將自創的 NumPy 陣列轉換為 PIL 影象 Python

在這裡,我們建立一個大小為 400x400 的 NumPy 陣列,其隨機數範圍為 0255,然後使用 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()

輸出:

將 NumPy 陣列轉換為 PIL 影象 Python 應用 Matplotlib Colormap

它應用了 Matplotlib 包中的 plasma colormap。要將一個 colormap 應用到一個影象上,我們首先要將 array 歸一化,最大值為 1。在上面的例子中,image_array 中元素的最大值是 255。因此,我們將 image_array 除以 255 進行歸一化。

然後,我們將 colormap 應用到 image_array 中,並再次乘以 255。然後,我們使用 np.uint8() 方法將元素轉換為 int 格式。最後,我們使用 Image.fromarray() 函式將陣列轉換為影象。

作者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

相關文章 - Matplotlib Images