ホームページ  >  記事  >  バックエンド開発  >  ピクセル操作のために PIL イメージを NumPy 配列に効率的に変換し、元に戻すにはどうすればよいですか?

ピクセル操作のために PIL イメージを NumPy 配列に効率的に変換し、元に戻すにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-19 14:18:03643ブラウズ

How to Efficiently Convert PIL Images to NumPy Arrays for Pixel Manipulation and Back?

効率的なピクセル操作のために PIL イメージを NumPy 配列に変換する

質問: ピクセルを高速化するために、PIL イメージを NumPy 配列に変換するにはどうすればよいですかPIL イメージへの変換中に問題が発生することなく変換できますか?

回答:

プロセスには 2 つのステップが含まれます:

PIL イメージの変換to NumPy Array

PIL イメージを NumPy 配列に変換するには、例として次のコードを使用できます。

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

Converting NumPy Array Back to PIL Image

pic.putdata() の使用:

変更された配列を PIL イメージにロードし直そうとしたときに pic.putdata() が期待どおりに動作しない場合は、データを提供していることを確認してくださいputdata() が受け入れる形式で。一連のタプルを想定しているため、以下に示すように、配列をこの形式に変換する必要がある場合があります:

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

PIL 1.1.6 の使用:

PIL 1.1.6 では、画像と NumPy 配列間の変換に次の簡素化されたアプローチを使用できます:

pix = numpy.array(pic)

これにより、行、列、および RGB 値を含む 3 次元配列が生成されます。

最終ステップ:

配列に変更を加えた後、 pic.putdata(pix) または Image.fromarray(pix) を使用して新しい PIL イメージを作成できます。 .

以上がピクセル操作のために PIL イメージを NumPy 配列に効率的に変換し、元に戻すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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