Python PIL For Loop para trabajar con TIFF de imágenes múltiples

Cada archivo tiff tiene 4 imágenes en él. No deseo extraerlos y guardarlos si es posible, solo me gustaría usar un bucle for para ver cada uno de ellos. (Como mirar el píxel [0,0]) y dependiendo de qué color sea en todos los 4 haré algo en consecuencia.

¿Es esto posible usando PIL? Si no, ¿qué debo usar?

Puede usar el método de “búsqueda” de una imagen PIL para tener acceso a las diferentes páginas de un tif (o marcos de un gif animado).

from PIL import Image img = Image.open('multipage.tif') for i in range(4): try: img.seek(i) print img.getpixel( (0, 0)) except EOFError: # Not enough frames in img break 

En lugar de hacer un bucle hasta un EOFError , se puede EOFError iteración las páginas de imagen usando PIL.ImageSequence (que efectivamente es equivalente a lo que se ve en el código fuente ).

 from PIL import Image, ImageSequence im = Image.open("multipage.tif") for i, page in enumerate(ImageSequence.Iterator(im)): page.save("page%d.png" % i) 

Aquí hay un método que lee un tiff de varias páginas y devuelve las imágenes como una matriz numpy

 from PIL import Image import numpy as np def read_tiff(path, n_images): """ path - Path to the multipage-tiff file n_images - Number of pages in the tiff file """ img = Image.open(path) images = [] for i in range(n_images): try: img.seek(i) slice_ = np.zeros((img.height, img.width)) for j in range(slice_.shape[0]): for k in range(slice_.shape[1]): slice_[j,k] = img.getpixel((j, k)) images.append(slice_) except EOFError: # Not enough frames in img break return np.array(images)