pil - python draw image from array




Como faço para converter um array numpy para(e exibir) uma imagem? (4)

Eu criei uma matriz assim:

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

O que eu quero fazer é exibir um único ponto vermelho no centro de uma imagem de 512x512. (Pelo menos para começar ... acho que posso descobrir o resto de lá)



O caminho mais curto é usar scipy , assim:

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

Isso requer PIL ou Pillow para ser instalado também.

Uma abordagem semelhante que também requer PIL ou Pillow, mas que pode invocar um visualizador diferente, é:

from scipy.misc import imshow
imshow(data)

Usando pygame , você pode abrir uma janela, obter a superfície como uma matriz de pixels e manipular como quiser a partir daí. Você precisará copiar seu array numpy no array de superfície, no entanto, o que será muito mais lento do que fazer operações gráficas reais nas próprias superfícies do PyGame.


Você poderia usar o PIL para criar (e exibir) uma imagem:

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()




numpy