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

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

Linda Hamilton
發布: 2024-11-13 13:18:02
原創
523 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板