2012-04-29 12 views
14

Quiero abrir dos archivos de imagen png y mostrarlos uno al lado del otro para una comparación visual. Tengo este código para abrir un archivo PNG (que obtuve de unutbu en stackoverflow.com):mostrar dos imágenes png simultáneamente usando pylab

import numpy as np 
import pylab 
import matplotlib.cm as cm 
import Image 

fname='file.png' 
image=Image.open(fname).convert("L") 
arr=np.asarray(image) 
pylab.imshow(arr,cmap=cm.Greys_r) 
pylab.title('title') 
pylab.show() 

¿Hay una manera de modificar el código para abrir y mostrar archivos lado a lado 2 png con su propia títulos?

Respuesta

22

las siguientes obras para mí (se puede comentar/descomentar las líneas en el código para cambiar el diseño de la imagen "compuesto"):

#!/usr/bin/env python 
#-*- coding:utf-8 -*- 

import numpy as np 
import pylab 
import matplotlib.cm as cm 
import Image 

f = pylab.figure() 
for n, fname in enumerate(('1.png', '2.png')): 
    image=Image.open(fname).convert("L") 
    arr=np.asarray(image) 
    f.add_subplot(2, 1, n) # this line outputs images on top of each other 
    # f.add_subplot(1, 2, n) # this line outputs images side-by-side 
    pylab.imshow(arr,cmap=cm.Greys_r) 
pylab.title('Double image') 
pylab.show() 

EDIT: captura de pantalla:

enter image description here

+0

Esto es excelente! ¡Gracias! – balibakbar

+0

¿Esto no causará un error de "índice fuera de rango" si agrega más de dos imágenes? – Seanny123

+3

Para obtener el último 'matplotlib', será mejor que use el índice que comienza en 1. Vea el [el documento oficial] (http://matplotlib.org/api/api_changes.html#changes-in-1-4-x) – wlnirvana

0

Aquí hay un ejemplo que incluye dos subgrafos en una figura.

import pylab 

coordinates = range(5) 
x = [1,4,5,6,2] 
y = [4,6,8,9,2] 

fig = pylab.figure() 

fig_1 = fig.add_subplot(2,1,1) 

fig_1.bar(coordinates,x) 

fig_2 = fig.add_subplot(2,1,2) 

fig_2.bar(coordinates,y) 

pylab.show() 

Creo que solo tiene que combinar esto con lo que ya tiene.

0

la combinación de las respuestas de arriba en un código que ahora uso:

`

import pylab as P 
import numpy as N 
import Image 

fnames = ['1.png', '2.png', '3.png'] 

fig = P.figure() 
for i,fname in enumerate(fnames): 
    fig.add_subplot(number_images, 1, i+1) 
    P.imshow(N.asarray(Image.open(fname).convert("L"))) 
P.show() 

`

Cuestiones relacionadas