Отображение изображения с помощью Python


99

Я попытался использовать IPython.display со следующим кодом:

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

Я также пробовал использовать matplotlib со следующим кодом:

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

В обоих случаях ничего не отображается, даже сообщение об ошибке.

Ответы:


189

Если вы используете matplotlib и хотите показать изображение в интерактивной записной книжке, попробуйте следующее:

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

Спасибо за ответ, почти работает :-) Изображение отображается, но уровни серого заменены с помощью фаер лут. Любая идея?
FiReTiTi

2
Попробуйте явно определить цветовую карту: plt.imshow (lum_img, cmap = "gray")
Джо Батхелт

3
Насколько я понимаю, последняя команда plt.show () производит отображение. До этого вы могли добавлять к сюжету, например, добавляя слои к изображению. Я рекомендую учебник по изображениям matplotlib в качестве справки: matplotlib.org/users/image_tutorial.html
Джо Бателт,

5
Спасибо за ответы, теперь все работает отлично! Немного подробностей для потенциальных читателей, он «серый» вместо «серого».
FiReTiTi

Нет, серый - правильное и оригинальное написание. Серый цвет был принят в некоторых отклонениях от английского языка, поэтому он более распространен в таких странах, как США.
perfo

37

Если вы используете matplotlib, вам нужно показать изображение с помощью, plt.show()если вы не находитесь в интерактивном режиме. Например:

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

Читая другой ответ, я только что понял, что мне нужно добавить plt.show () после кода, который у меня уже есть, вместо замены imshow. Спасибо за вашу помощь.
FiReTiTi

Я думаю, что это дает точный ответ на вопрос по сравнению с принятым ответом.
Прасад Рагхавендра

19

Более простым способом вы можете сделать то же самое, используя

from PIL import Image

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

1
Спасибо за помощь. Я установил PIL, и теперь он работает. Есть идеи, почему два метода, которые я пробовал, не сработали?
FiReTiTi

Если не удалось установить PIL (как в случае со мной), попробуйте Pillow, для меня это сработало как шарм.
mrk

1
Интересно, как import Imageработает утверждение; не должно быть from PIL import Image?
Ласло Трешкай,

Это решение не обязательно закрывает файловый дескриптор. Вместо этого используйте его с диспетчером контекста:with Image.open('image.jpg') as im: im.show()
Ласло Трешкай

Что это за Imageпакет?
Луи Ян

10

Это сработало для меня, вдохновлено @the_unknown_spirit

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

5

Использование opencv-python быстрее для большего количества операций с изображением:

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

Это просто Используйте следующий псевдокод

from pylab import imread,subplot,imshow,show

import matplotlib.pyplot as plt

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

plt.imshow(image)

plt.show() // это покажет вам изображение на консоли.


4

Ваше первое предложение работает для меня

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

Это всегда будет отображаться первым, если есть и другие графики, почему?
Христос Карапапас,

1
не уверена. Я не эксперт по ipython. Есть несколько способов показать изображение, как вы можете видеть из ответов здесь.
Гарри Морено

2

Используя Jupyter Notebook, код может быть таким простым, как следующий.

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

Иногда вам может потребоваться отобразить серию изображений в цикле for, и в этом случае вы можете захотеть объединить их displayи Imageзаставить их работать.

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

1

Ваш код:

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

Каким должно быть:

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

вам не хватает a, plt.show()если вы не используете блокнот Jupyter, другие IDE не отображают графики автоматически, поэтому вы должны использовать его plt.show()каждый раз, когда хотите отобразить график или внести изменения в существующий график в последующем коде.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.