効率的なピクセル変換のために PIL 画像を NumPy 配列に変換する
画像処理タスクを使用する場合、多くの場合、PIL を変換することが望ましいです ( Python Imaging Library) の画像を NumPy 配列に変換して、ピクセル単位の変換を高速化します。この変換により、画像データの効率的な操作が可能になり、より複雑で時間に最適化された画像操作が可能になります。
PIL 画像を NumPy 配列に変換するには、次のコード スニペットを使用できます:
pic = Image.open("foo.jpg") pix = numpy.array(pic.getdata()).reshape(pic.size[0], pic.size[1], 3)
このコードは、PIL イメージからイメージ データを読み取り、それを 3 次元の NumPy 配列に再形成します。各次元はイメージの高さ、幅、および高さを表します。
必要な変換を実行した後に NumPy 配列を PIL イメージに戻すには、次のコードを使用できます:
new_pic = Image.fromarray(modified_pix)
ただし、このメソッドは変更された NumPy 配列を使用して元の PIL イメージを直接変更することはできません。
PIL バージョンより前1.1.6 では、元の PIL イメージを変更するには、NumPy 配列をタプルのリストに変換する必要がありました:
data = list(tuple(pixel) for pixel in modified_pix) pic.putdata(data)
ただし、このアプローチは時間がかかり、非効率的になる可能性があります。
PIL バージョン 1.1 では。 6 以降、PIL イメージと NumPy 配列間の変換に推奨される方法は:
pix = numpy.array(pic)
このコマンドは、行、列、および RGB チャネルを次元として持つ 3 次元の NumPy 配列を生成します。
ピクセル変換を実行した後、更新された配列を変換できます。
new_pic = Image.fromarray(modified_pix)
を使用して PIL イメージに戻します。または、変更した NumPy を使用して元の PIL イメージを変更することもできます。配列:
pic.putdata(modified_pix)
以上がピクセル変換のために PIL イメージを NumPy 配列に効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。