Как преобразовать массив numpy в изображение (и отобразить его)?



Я создал массив так:



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


что я хочу, чтобы это сделать, это отобразить одну красную точку в центре изображения 512x512. (По крайней мере для начала... Я думаю, что смогу выяснить остальное оттуда)

3923   5  

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: как говорится в примечании внизу этой страницы, вы должны проверить последние заметки о выпуске, которые делают это намного проще:

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

Comments

    Ничего не найдено.