Mostrar secuencia de imágenes usando matplotlib

Tengo este sencillo script de Python que utiliza OpenCV para cargar imágenes de una carpeta y mostrarlas en un bucle. Quiero reproducir este efecto usando matplotlib .

 import cv2 as cv import os im_files = [for f in os.listdir('.') if f[-3:] == 'png'] for f in im_files: im = cv.imread(f, 0) #read image in greyscale cv.imshow('display', im) cv.waitKey(1) cv.destroyAllWindows() 

Intenté la siguiente secuencia de comandos, pero la ventana de la raíz que se abre para mostrar las gráficas no responde.

 import pylab as pl import os files = [f for f in os.listdir('.') if f[-3:] == 'png'] pl.ion() for f in files: im=pl.imread(f) pl.imshow(im) pl.draw() 

He buscado mucho en Google pero no pude encontrar ninguna solución. ¿Cómo voy a hacer esto? Estoy usando Anaconda 1.6 32bit en Windows 8.

Related of "Mostrar secuencia de imágenes usando matplotlib"

 img = None for f in files: im=pl.imread(f) if img is None: img = pl.imshow(im) else: img.set_data(im) pl.pause(.1) pl.draw() 

He implementado un práctico script basado en matplotlib que se adapta a sus necesidades y mucho más. Compruébalo aquí

En su caso, el siguiente fragmento de código debería funcionar:

 import os from scipy.misc import imread img_files = [for f in os.listdir('.') if f[-3:] == 'png'] # redraw_fn draw frame f in a image sequence def redraw_fn(f, axes): img_file = img_files[f] img = imread(img_file) if not redraw_fn.initialized: redraw_fn.im = axes.imshow(img, animated=True) redraw_fn.initialized = True else: redraw_fn.im.set_array(img) redraw_fn.initialized = False videofig(len(img_files), redraw_fn, play_fps=30) 

Me gusta la siguiente forma de hacer esto, que es realmente sencilla y permite actualizar toda la figura, incluidos el título, las tags, etc. en lugar de solo la imagen.

 import numpy as np from matplotlib import pyplot as plt for j in range(0,3): img = np.random.normal(size=(100,150)) plt.figure(1); plt.clf() plt.imshow(img) plt.title('Number ' + str(j)) plt.pause(3) 

Se forma una imagen al azar.

plt.figure crea la figura la primera vez si todavía no existe, y luego la figura 1 se convierte en la figura actual.

plt.clf borra la figura para que las actualizaciones posteriores no se superpongan entre sí. La imagen se muestra con un título.

La statement plt.pause es la clave, ya que esto hace que la pantalla se actualice, incluidos el título, las tags, etc.