[解決済み】PILイメージをnumpyの配列に変換する方法は?
2022-03-25 06:02:44
質問
さて、私はPILの画像オブジェクトを前後にnumpy配列に変換して、PILの変換よりも高速なピクセル単位の変換を行うことができるように遊んでいます。
PixelAccess
オブジェクトを使用することができます。 ピクセル情報を有用な3D numpy配列に配置する方法を考え出した。
pic = Image.open("foo.jpg")
pix = numpy.array(pic.getdata()).reshape(pic.size[0], pic.size[1], 3)
しかし、私はすべての素晴らしい変換を行った後、それをPILオブジェクトに読み戻す方法を見つけ出すことができないようです。 私が知っているのは
putdata()
メソッドがありますが、うまく動作させることができないようです。
解決方法は?
具体的にどうすればいいのかがわからない
putdata()
が動作していない。していると推測されます。
>>> pic.putdata(a)
Traceback (most recent call last):
File "...blablabla.../PIL/Image.py", line 1185, in putdata
self.im.putdata(data, scale, offset)
SystemError: new style getargs format but argument is not a tuple
これは、以下の理由からです。
putdata
はタプルのシーケンスを期待し、あなたはそれをnumpyの配列に与えています。これは
>>> data = list(tuple(pixel) for pixel in pix)
>>> pic.putdata(data)
は動作しますが、非常に遅くなります。
PIL 1.1.6以降では 画像とnumpyの配列を変換するための正しい方法 は単純に
>>> pix = numpy.array(pic)
が、結果の配列はあなたのものとは異なる形式です(この場合、3次元配列または行/列/rgb)。
そして、配列に変更を加えた後、次のいずれかを行うことができるはずです。
pic.putdata(pix)
で新しい画像を作成するか
Image.fromarray(pix)
.
関連
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み] NumPyの配列を切り詰めずに、完全に表示するにはどうしたらよいですか?
-
[解決済み] NumPyの配列で、N個の最大値のインデックスを得るには?
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] div' コンテナに合わせて画像を自動リサイズするにはどうしたらいいですか?
-
[解決済み] div 内の画像を縦に並べる方法
-
[解決済み] 2つのリストを辞書に変換するにはどうしたらいいですか?
-
[解決済み] NumPy の配列を csv ファイルにダンプする
-
[解決済み] PILを使用して画像のサイズを変更し、縦横比を維持するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python カメの描画コマンドとその例
-
Python百行で韓服サークルの画像クロールを実現する
-
Pythonの学習とデータマイニングのために知っておくべきターミナルコマンドのトップ10
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み] _tkinter.TclError: 表示名がなく、$DISPLAY環境変数もない。
-
[解決済み】"No JSON object could be decoded "よりも良いエラーメッセージを表示する。
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み】ValueError: xとyは同じサイズでなければならない
-
[解決済み] Numpyのarray()関数とasarray()関数の違いは何ですか?