varias una sumar recorrer procesamiento por para mostrar matriz librerias imagenes imagen descomponer convertir como centro binario python image image-processing numpy

una - Mostrar matriz como imagen raster en python



recorrer imagen pixel por pixel python (3)

Tengo una matriz numpy en Python y me gustaría mostrarla en pantalla como una imagen rasterizada. ¿Cuál es la forma más sencilla de hacer esto? No es necesario que sea particularmente sofisticado o que tenga una interfaz agradable, todo lo que debo hacer es mostrar el contenido de la matriz como una imagen raster en escala de grises.

Estoy tratando de transferir parte de mi código IDL a Python con NumPy y básicamente estoy buscando un reemplazo para los comandos tv y tvscl en IDL.


Adición rápida: para mostrar con matplotlib, si desea que la imagen aparezca "rasterizada", es decir, pixelizada sin suavizar, debe incluir la opción interpolación = ''más cercana'' en la llamada a imshow.


Dependiendo de sus necesidades, probablemente sea la mejor opción, ya sea matplotlib''s o glumpy .

Matplotlib es infinitamente más flexible, pero más lento (las animaciones en matplotlib pueden ser sorprendentemente intensivas en recursos incluso cuando haces todo bien). Sin embargo, tendrás a tu disposición una biblioteca de trazado realmente maravillosa y con todas las funciones.

Glumpy se adapta perfectamente para la visualización y animación rápidas basadas en OpenGL de una matriz de numpy 2D, pero es mucho más limitado en lo que hace. Si necesita animar una serie de imágenes o mostrar datos en tiempo real, es una opción mucho mejor que matplotlib.

Usando matplotlib (usando la API de pyplot en lugar de pylab):

import matplotlib.pyplot as plt import numpy as np # Generate some data... x, y = np.meshgrid(np.linspace(-2,2,200), np.linspace(-2,2,200)) x, y = x - x.mean(), y - y.mean() z = x * np.exp(-x**2 - y**2) # Plot the grid plt.imshow(z) plt.gray() plt.show()

Utilizando glumpy:

import glumpy import numpy as np # Generate some data... x, y = np.meshgrid(np.linspace(-2,2,200), np.linspace(-2,2,200)) x, y = x - x.mean(), y - y.mean() z = x * np.exp(-x**2 - y**2) window = glumpy.Window(512, 512) im = glumpy.Image(z.astype(np.float32), cmap=glumpy.colormap.Grey) @window.event def on_draw(): im.blit(0, 0, window.width, window.height) window.mainloop()


Usando ipython en el modo interactivo de pylab, podrías hacer:

$ ipython pylab In [1]: imshow(your_array)

o no en modo pylab:

$ ipython In [1]: from pylab import * In [2]: imshow(your_array) In [3]: pylab.show()

o sin la cosa del espacio de nombres pylab:

$ ipython In [1]: import matplotlib.pyplot as pyplot In [2]: pyplot.imshow(your_array) In [3]: pyplot.show()