Mostrar una imagen con Python


99

Intenté usar IPython.display con el siguiente código:

from IPython.display import display, Image
display(Image(filename='MyImage.png'))

También intenté usar matplotlib con el siguiente código:

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
plt.imshow(mpimg.imread('MyImage.png'))

En ambos casos, no se muestra nada, ni siquiera un mensaje de error.

Respuestas:


189

Si está utilizando matplotlib y desea mostrar la imagen en su cuaderno interactivo, intente lo siguiente:

%pylab inline
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
img = mpimg.imread('your_image.png')
imgplot = plt.imshow(img)
plt.show()

Gracias por tu respuesta, casi funciona :-) Se muestra la imagen, pero los niveles de gris se reemplazan usando un fuego lut. ¿Alguna idea?
FiReTiTi

2
Intente definir el mapa de colores explícitamente: plt.imshow (lum_img, cmap = "gray")
Joe Bathelt

3
Según tengo entendido, el último comando plt.show () produce la pantalla. Antes de eso, podría agregar al gráfico, por ejemplo, agregando capas a la imagen. Recomiendo el tutorial de imágenes de matplotlib como referencia: matplotlib.org/users/image_tutorial.html
Joe Bathelt

5
Gracias por tus respuestas, ¡ahora funciona perfectamente! Solo unos pequeños detalles para los lectores potenciales, es "gris" en lugar de "gris".
FiReTiTi

No, Gray es la ortografía correcta y original. El gris se ha adoptado en algunas desviaciones del inglés por lo que es más común en países como EE. UU.
perfo

37

Si lo usa matplotlib, debe mostrar la imagen usando a plt.show()menos que no esté en modo interactivo. P.ej:

plt.figure()
plt.imshow(sample_image) 
plt.show()  # display it

Leyendo otra respuesta, acabo de recibir que tengo que agregar plt.show () después del código que ya tengo, en lugar de reemplazar el imshow. Gracias por tu ayuda.
FiReTiTi

Creo que esto responde a la pregunta precisamente en comparación con la respuesta aceptada.
Prasad Raghavendra

19

De una manera mucho más simple, puede hacer lo mismo usando

from PIL import Image

image = Image.open('image.jpg')
image.show()

1
Gracias por tu ayuda. He instalado PIL y ahora funciona. ¿Alguna idea de por qué los dos métodos que probé no funcionaron?
FiReTiTi

Si no instalo PIL (como fue mi caso), pruebe Pillow, funcionó como un encanto para mí.
mrk

1
Me pregunto cómo funciona la import Imagedeclaración; ¿No debería ser from PIL import Image?
Laszlo Treszkai

Esta solución no cierra necesariamente el descriptor de archivo. En su lugar, with Image.open('image.jpg') as im: im.show()
úselo

¿Qué es este Imagepaquete?
Louis Yang

10

Esto funcionó para mí, inspirado por @the_unknown_spirit

from PIL import Image
image = Image.open('test.png')
image.show()

5

Usar opencv-python es más rápido para más operaciones en la imagen:

import cv2
import matplotlib.pyplot as plt

im = cv2.imread('image.jpg')
im_resized = cv2.resize(im, (224, 224), interpolation=cv2.INTER_LINEAR)

plt.imshow(cv2.cvtColor(im_resized, cv2.COLOR_BGR2RGB))
plt.show()

4

Es simple Use el siguiente pseudocódigo

from pylab import imread,subplot,imshow,show

import matplotlib.pyplot as plt

image = imread('...')  // choose image location

plt.imshow(image)

plt.show() // esto le mostrará la imagen en la consola.


4

Tu primera sugerencia me funciona

from IPython.display import display, Image
display(Image(filename='path/to/image.jpg'))

Esto siempre se mostrará primero si también hay otros gráficos, ¿por qué?
Christos Karapapas

1
no estoy seguro. No soy un experto en ipython. Hay varias formas de mostrar una imagen, como puede ver en las respuestas aquí.
Harry Moreno

2

Con Jupyter Notebook, el código puede ser tan simple como el siguiente.

%matplotlib inline
from IPython.display import Image
Image('your_image.png')

A veces, es posible que desee mostrar una serie de imágenes en un bucle for, en cuyo caso es posible que desee combinar displayy Imagehacer que funcione.

%matplotlib inline
from IPython.display import display, Image
for your_image in your_images:
    display(Image('your_image'))

1

Tu codigo:

import matplotlib.pyplot as plt
import matplotlib.image as mpimg

Lo que debería ser:

plt.imshow(mpimg.imread('MyImage.png'))
File_name = mpimg.imread('FilePath')
plt.imshow(FileName)
plt.show()

le falta un a plt.show()menos que esté en el cuaderno Jupyter, otros IDE no muestran gráficos automáticamente, por lo que debe usarlo plt.show()cada vez que desee mostrar un gráfico o realizar un cambio en un gráfico existente en el código de seguimiento.


1
import IPython.display as display
from PIL import Image
image_path = 'my_image.jpg'
display.display(Image.open(image_path))
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.