web-dev-qa-db-ja.com

PILで1チャンネルの画像を3チャンネルに変換するにはどうすればよいですか?

1つのチャネルを持つ画像があります。この1つのチャネルを複製して、同じチャネルを持つ新しい画像を3回複製して取得できるようにします。基本的に、準RBG画像を作成します。

OpenCVでこれを行う方法に関する情報がいくつか表示されますが、PILでは表示されません。 Numpyでは簡単に見えますが、PILは異なります。いつも図書館から図書館へとジャンプする習慣をつけたくありません。

7
Monica Heddneck

これは、ドキュメントをあまり見ないで1つの方法です。

偽の画像:

im = Image.new('P', (16,4), 127)

シングルバンド画像の(ピクセル)サイズを取得します。同じサイズの新しい3バンド画像を作成します。 Zipを使用して、元のピクセルタプルを作成します。それを新しい画像に入れてください。

w, h = im.size
ima = Image.new('RGB', (w,h))
data = Zip(im.getdata(), im.getdata(), im.getdata())
ima.putdata(list(data))

またはおそらく

new = im.convert(mode='RGB')
2
wwii

使用するだけです:

image = Image.open(image_info.path).convert("RGB")

1チャンネルと4チャンネルの両方を3チャンネルに変換できます

2
MarStarck