pil - python draw image from array




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

A Python Imaging Library pode exibir imagens usando matrizes Numpy. Dê uma olhada nesta página para código de amostra:

EDIT: Como a nota na parte inferior da página diz, você deve verificar as últimas notas de versão que tornam isso muito mais simples:

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

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