ホームページ > バックエンド開発 > Python チュートリアル > ピクセル変換のために PIL イメージを NumPy 配列に効率的に変換するにはどうすればよいですか?

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

Mary-Kate Olsen
リリース: 2024-11-12 13:24:02
オリジナル
232 人が閲覧しました

How to Efficiently Convert PIL Images to NumPy Arrays for Pixel Transformations?

効率的なピクセル変換のために 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート