Отображение изображения с помощью 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'))

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

FiReTiTi
источник

Ответы:

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
MaxPowers
источник
Читая другой ответ, я только что понял, что мне нужно добавить plt.show () после кода, который у меня уже есть, вместо замены imshow. Спасибо за вашу помощь.
FiReTiTi
Я думаю, что это дает точный ответ на вопрос по сравнению с принятым ответом.
Прасад Рагхавендра
19

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

from PIL import Image

image = Image.open('image.jpg')
image.show()
the_unknown_spirit
источник
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()каждый раз, когда хотите отобразить график или внести изменения в существующий график в последующем коде.

Рохит Мадан
источник
1
import IPython.display as display
from PIL import Image
image_path = 'my_image.jpg'
display.display(Image.open(image_path))
Раджан саха Раджу
источник