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'')))