Как преобразовать массив numpy в изображение (и отобразить его)?
Я создал массив так:
import numpy as np
data = np.zeros( (512,512,3), dtype=np.uint8)
data[256,256] = [255,0,0]
что я хочу, чтобы это сделать, это отобразить одну красную точку в центре изображения 512x512. (По крайней мере для начала... Я думаю, что смогу выяснить остальное оттуда)
5 ответов:
вы можете использовать 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()
вы просто это имеете в виду?
from matplotlib import pyplot as plt plt.imshow(data, interpolation='nearest') plt.show()
кратчайший путь-использовать
scipy, например:from scipy.misc import toimage toimage(data).show()Это требует, что пил или подушка были установлены также.
подобный подход также требует PIL или подушки, но который может вызвать другой зритель - это:
from scipy.misc import imshow imshow(data)
используя pygame, вы можете открыть окно, получить поверхность в виде массива пикселей, и манипулировать, как вы хотите оттуда. Однако вам нужно будет скопировать массив numpy в массив surface, что будет намного медленнее, чем выполнение реальных графических операций на самих поверхностях pygame.
The Библиотека Изображений Python можно отображать изображения с помощью массивов Numpy. Взгляните на эту страницу для примера кода:
EDIT: как говорится в примечании внизу этой страницы, вы должны проверить последние заметки о выпуске, которые делают это намного проще:
Comments