質問: ピクセルを高速化するために、PIL イメージを NumPy 配列に変換するにはどうすればよいですかPIL イメージへの変換中に問題が発生することなく変換できますか?
回答:
プロセスには 2 つのステップが含まれます:
PIL イメージを NumPy 配列に変換するには、例として次のコードを使用できます。
pic = Image.open("foo.jpg") pix = numpy.array(pic.getdata()).reshape(pic.size[0], pic.size[1], 3)
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 サイトの他の関連記事を参照してください。