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.

FiReTiTi
fuente

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()
Joe Bathelt
fuente
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
MaxPowers
fuente
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()
the_unknown_spirit
fuente
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()
Punnerud
fuente
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()
Qhan
fuente
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.

Ayush Srivastava
fuente
4

Tu primera sugerencia me funciona

from IPython.display import display, Image
display(Image(filename='path/to/image.jpg'))
Harry Moreno
fuente
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'))
Fei Yao
fuente
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.

Rohit Madan
fuente
1
import IPython.display as display
from PIL import Image
image_path = 'my_image.jpg'
display.display(Image.open(image_path))
Rajan saha Raju
fuente