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.