Відображення зображення за допомогою 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'))

В обох випадках нічого не відображається, навіть повідомлення про помилку.

Відповіді:


191

Якщо ви використовуєте 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

3
Спробуйте чітко визначити карту кольорів: plt.imshow (lum_img, cmap = "grey")
Джо Батель

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

5
Дякуємо за ваші відповіді, тепер це чудово працює! Лише трохи деталей для потенційних читачів, воно "сіре", а не "сіре".
FiReTiTi

Ні, сірий - це правильне та оригінальне написання. Сірий був прийнятий в деяких відхиленнях від англійської мови, тому частіше зустрічається в таких країнах, як США.
перфо

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()

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


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.