web-dev-qa-db-ja.com

numpy配列を画像に変換(そして表示)するにはどうすればいいですか?

このようにして配列を作成しました。

import numpy as np
data = np.zeros( (512,512,3), dtype=np.uint8)
data[256,256] = [255,0,0]

これを実行したいのは、512 x 512の画像の中央に1つの赤い点を表示することです。 (少なくとも最初から…残りの部分はそこから把握できると思います)

170
jlswint

PILを使って画像を作成(および表示)することができます。

from PIL import Image
import numpy as np

w, h = 512, 512
data = np.zeros((h, w, 3), dtype=np.uint8)
data[256, 256] = [255, 0, 0]
img = Image.fromarray(data, 'RGB')
img.save('my.png')
img.show()
161
unutbu

以下が動作するはずです。

from matplotlib import pyplot as plt
plt.imshow(data, interpolation='nearest')
plt.show()

Jupyter Notebook/labを使用している場合は、matplotlibをインポートする前にこのインラインコマンドを使用してください。

%matplotlib inline 
221
Steve Tjoa

最短パスは、次のようにscipyを使用することです。

from scipy.misc import toimage
toimage(data).show()

これにはPILまたはPillowもインストールする必要があります。

PILまたはPillowも必要な同様のアプローチですが、別のビューアを起動する可能性があります

from scipy.misc import imshow
imshow(data)
48
Peter Hansen

pygame を使用すると、ウィンドウを開いてサーフェスをピクセルの配列として取得し、そこから必要に応じて操作できます。ただし、派手な配列をサーフェス配列にコピーする必要があります。これは、pygameサーフェス自体で実際のグラフィック操作を行うよりもはるかに遅くなります。

3
Stefan Kendall

Python Imaging Library はNumpy配列を使って画像を表示することができます。このページでサンプルコードを確認してください。

編集:そのページの一番下のメモが言うように、あなたはこれをずっと簡単にする最新のリリースノートをチェックするべきです:

http://effbot.org/zone/pil-changes-116.htm

1
ars