首頁 >後端開發 >Python教學 >如何將 PIL 影像轉換為 NumPy 陣列以進行無縫像素操作?

如何將 PIL 影像轉換為 NumPy 陣列以進行無縫像素操作?

Linda Hamilton
Linda Hamilton原創
2024-11-24 08:59:12166瀏覽

How to Convert PIL Images to NumPy Arrays for Seamless Pixel Manipulation?

將PIL 影像轉換為NumPy 陣列以增強像素操作

問題:

如何有效率地轉換PIL 影像到NumPy 數組中進行無縫像素級轉換?雖然使用 numpy.array(pic.getdata()) 從 PIL 影像轉換為 NumPy 陣列非常簡單,但將修改後的陣列重新載入為 PIL 影像的反向操作並不那麼直觀。

答案:

從修改後的 NumPy 陣列成功更新 PIL 影像的關鍵在於理解預期的資料格式。最初,當使用 numpy.array(pic.getdata()) 從影像中檢索陣列時,產生的矩陣是二維的(行和列)。然而,有效地操作像素需要一個包含行、列和 RGB 值的 3 維數組。

解決方案:

要解決此問題,請應用以下步驟:

  1. 將PIL 影像轉換為NumPy 陣列: 使用numpy.array(pic) 以取得具有所需格式的3 維NumPy 數組。
  2. 編輯 NumPy 陣列中的像素: 對 NumPy 陣列執行所需的逐像素修改。
  3. 更新PIL 影像中修改後的NumPy 陣列: 取代原始像素使用修改後的值,使用pic.putdata(pix) 或使用Image.fromarray(pix) 建立新的PIL圖像。

附加說明:

  • 確保對NumPy 陣列的任何修改都在正確的顏色範圍內(例如,0-255 表示8 位元RGB 影像)。
  • 將 NumPy 陣列轉換為 PIL 影像可能需要重塑或展平陣列以適應預期格式。

以上是如何將 PIL 影像轉換為 NumPy 陣列以進行無縫像素操作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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