Как преобразовать массив numpy в (и отобразить) изображение?
Я создал массив таким образом:
import numpy as np
data = np.zeros( (512,512,3), dtype=np.uint8)
data[256,256] = [255,0,0]
Что я хочу сделать, это отобразить одну красную точку в центре изображения 512x512. (По крайней мере, для начала... Я думаю, что смогу выяснить остальное оттуда)
Ответы
Ответ 1
Вы можете использовать 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()
Ответ 2
Следующее должно работать:
from matplotlib import pyplot as plt
plt.imshow(data, interpolation='nearest')
plt.show()
Если вы используете Jupyter notebook/lab, используйте эту встроенную команду перед импортом matplotlib:
%matplotlib inline
Ответ 3
Самый короткий путь - использовать scipy
, например:
from scipy.misc import toimage
toimage(data).show()
Для этого необходимо установить PIL или Pillow.
Аналогичный подход, требующий PIL или Pillow, но который может вызвать другой просмотрщик, заключается в следующем:
from scipy.misc import imshow
imshow(data)
Ответ 4
Используя pygame, вы можете открыть окно, получить поверхность как массив пикселей и манипулировать, как вы хотите оттуда, Вам нужно будет скопировать массив numpy в поверхностный массив, однако это будет намного медленнее, чем делать фактические графические операции на самих дорожках pygame.
Ответ 5
Библиотека изображений Python может отображать изображения с использованием массивов Numpy. Взгляните на эту страницу для примера кода:
EDIT: Как отмечается в нижней части этой страницы, вы должны проверить последние заметки о выпуске, которые делают это намного проще:
http://effbot.org/zone/pil-changes-116.htm
Ответ 6
Используя подушку, например:
from PIL import Image
from numpy import *
im = array(Image.open('image.jpg'))
Image.fromarray(im).show()