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

DDD
發布: 2024-11-23 07:33:08
原創
381 人瀏覽過

How to Convert a PIL Image to a NumPy Array and Back?

將PIL 影像轉換為NumPy 陣列

問題:

如何將PIL 影像轉換為NumPy 影像執行數的逐像素轉換,然後在修改後將其加載回PIL 圖像數組?

答案:

轉換為 NumPy 陣列:

要將 PIL 影像轉換為 NumPy數組,請使用以下程式碼:

import numpy as np
from PIL import Image

pic = Image.open("foo.jpg")
pix = np.array(pic)
登入後複製

這將建立一個包含像素值的形狀(高度、寬度、通道)的 3D 陣列。

轉換回PIL 影像:

要將修改後的陣列載入回PIL 影像,有多種方法:

1.使用Image.putdata():

將陣列轉換回元組序列:

data = list(tuple(pixel) for pixel in pix)
pic.putdata(data)
登入後複製

2.使用 Image.fromarray()(PIL 1.1.6或更高版本):

只需將修改後的陣列分配給圖像:

pic = Image.fromarray(pix)
登入後複製

附加說明:

  • PIL Image 的getdata() 方法傳回一個扁平化數組,因此您需要重塑它以獲得3D 數組。
  • np.array(pic) 中的 NumPy 陣列將通道軸作為最後一個維度,而 getdata() 方法假定通道軸作為第一個維度。
  • Image.fromarray() 方法提供更快的轉換,特別是對於大圖像。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板