ホームページ >バックエンド開発 >Python チュートリアル >PIL イメージを NumPy 配列に変換して元に戻す方法は?

PIL イメージを NumPy 配列に変換して元に戻す方法は?

DDD
DDDオリジナル
2024-11-23 07:33:08467ブラウズ

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

PIL イメージを NumPy 配列に変換する

問題:

PIL イメージを NumPy 配列に変換するにはどうすればよいですか?より高速なピクセル単位の変換を実行し、変更した後、それを PIL イメージに再度ロードします。 array?

答え:

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 イメージの getdata() メソッドは、フラット化されたデータを返します。配列なので、3D 配列を取得するには形状を変更する必要があります。
  • np.array(pic) の NumPy 配列はチャネル軸を最後の次元として持ちますが、getdata() メソッドはチャネル軸を次のように想定します。最初の次元。
  • Image.fromarray() メソッドは、特に大きな画像の場合、より高速な変換を提供します。

以上がPIL イメージを NumPy 配列に変換して元に戻す方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。