vmin vmax help example python ipython python-imaging-library ipython-notebook

python - help - plt imshow vmin vmax



Cómo mostrar la imagen de PIL en el cuaderno ipython (6)

Basado en otras respuestas y en mis intentos, la mejor experiencia sería primero instalar, almohada y scipy, luego usar el siguiente código de inicio en su cuaderno jupyter:

%matplotlib inline from matplotlib.pyplot import imshow from scipy.misc import imread imshow(imread(''image.jpg'', 1))

Este es mi codigo

from PIL import Image pil_im = Image.open(''data/empire.jpg'')

Me gustaría hacer un poco de manipulación de la imagen y luego mostrarla en la pantalla.
Tengo problemas para mostrar la imagen PIL en el cuaderno de python.

Yo he tratado:

print pil_im

Y solo

pil_im

Pero ambos solo me dan:

<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=569x800 at 0x10ECA0710>


Encontré que esto esta funcionando

# source: http://nbviewer.ipython.org/gist/deeplook/5162445 from io import BytesIO from IPython import display from PIL import Image def display_pil_image(im): """Displayhook function for PIL Images, rendered as PNG.""" b = BytesIO() im.save(b, format=''png'') data = b.getvalue() ip_img = display.Image(data=data, format=''png'', embed=True) return ip_img._repr_png_() # register display func with PNG formatter: png_formatter = get_ipython().display_formatter.formatters[''image/png''] dpi = png_formatter.for_type(Image.Image, display_pil_image)

Después de esto solo puedo hacer:

pil_im

Pero esta debe ser la última línea en la celda, sin print después de ella


Puede usar el Module: display de IPython Module: display para cargar la imagen. Puedes leer más del doc .

from IPython.display import Image Image(filename=''data/empire.jpg'')

actualizado

Como el requisito de OP es usar PIL , si quieres mostrar una imagen en línea, puedes usar matplotlib.pyplot.imshow con numpy.asarray como esto también:

from matplotlib.pyplot import imshow import numpy as np from PIL import Image %matplotlib inline pil_im = Image.open(''data/empire.jpg'', ''r'') imshow(np.asarray(pil_im))

Si solo necesita una vista previa en lugar de una línea, puede usar show como esto:

pil_im = Image.open(''data/empire.jpg'', ''r'') pil_im.show()


Si está utilizando la extensión pylab, puede convertir la imagen a una matriz numpy y usar el show de matplotlib.

%pylab # only if not started with the --pylab option imshow(array(pil_im))

EDITAR: Como se mencionó en los comentarios, el módulo pylab está en desuso, así que use la magia matplotlib en su lugar e importe la función explícitamente:

%matplotlib from matplotlib.pyplot import imshow imshow(array(pil_im))


Use la pantalla IPython para representar imágenes PIL en un cuaderno.

from PIL import Image # to load images from IPython.display import display # to display images pil_im = Image.open(''path/to/image.jpg'') display(pil_im)


caso python3

from PIL import Image from IPython.display import HTML from io import BytesIO from base64 import b64encode pil_im = Image.open(''data/empire.jpg'') b = BytesIO() pil_im.save(b, format=''png'') HTML("<img src=''data:image/png;base64,{0}''/>".format(b64encode(b.getvalue()).decode(''utf-8'')))