首頁 >後端開發 >Python教學 >如何有效率地將 PIL 影像轉換為 NumPy 陣列並返回?

如何有效率地將 PIL 影像轉換為 NumPy 陣列並返回?

Linda Hamilton
Linda Hamilton原創
2024-11-13 13:18:02522瀏覽

How to Efficiently Convert PIL Images to NumPy Arrays and Back?

將PIL 影像轉換為NumPy 陣列並傳回

在處理基於像素的轉換時,NumPy 陣列的速度和靈活性通常比PIL 的PixelAccess 更有優勢。本文示範如何有效率地將 PIL 影像轉換為 NumPy 陣列並返回,使您能夠利用這兩個框架的功能。

將 PIL 影像轉換為 NumPy 陣列

import PIL.Image
import numpy as np

pic = PIL.Image.open("foo.jpg")
pix = np.array(pic.getdata()).reshape(pic.size[0], pic.size[1], 3)

此程式碼將 PIL 影像轉換為具有尺寸(高度、寬度、通道)的 NumPy 陣列。

將NumPy 陣列轉換為PIL 影像

有兩種方法可用:

方法1:使用pic .putdata()

data = list(tuple(pixel) for pixel in pix)
pic.putdata(data)

請請注意,對於大型數組,此方法可能會很慢。

方法2:使用Image.fromarray()(從PIL 1.1.6 開始)

pix = np.array(pic) # Converts PIL Image to NumPy array
# Make changes to the array
pic = PIL.Image.fromarray(pix)

此方法通常執行速度較快,是將NumPy 陣列轉換回PIL 影像的建議方法。

以上是如何有效率地將 PIL 影像轉換為 NumPy 陣列並返回?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn