Wyświetl obraz za pomocą Pythona


107

Próbowałem użyć IPython.display z następującym kodem:

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

Próbowałem też użyć matplotlib z następującym kodem:

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

W obu przypadkach nic nie jest wyświetlane, nawet komunikat o błędzie.

Odpowiedzi:


211

Jeśli używasz matplotlib i chcesz wyświetlić obraz w swoim interaktywnym notatniku, wypróbuj następujące rozwiązania:

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

Dziękuję za odpowiedź, prawie działa :-) Obraz jest wyświetlany, ale poziomy szarości są zastępowane za pomocą lutni ogniowej. Dowolny pomysł?
FiReTiTi

3
Spróbuj wyraźnie zdefiniować mapę kolorów: plt.imshow (lum_img, cmap = "gray")
Joe Bathelt,

3
W moim rozumieniu ostatnie polecenie plt.show () powoduje wyświetlenie. Wcześniej można było coś dodać do wykresu, np. Dodając warstwy do obrazu. Polecam samouczek dotyczący obrazu matplotlib jako odniesienie: matplotlib.org/users/image_tutorial.html
Joe Bathelt

5
Dzięki za odpowiedzi, teraz działa idealnie! Tylko drobne szczegóły dla potencjalnych czytelników, jest „szara” zamiast „szara”.
FiReTiTi

Nie, Grey to poprawna i oryginalna pisownia. Szary został przyjęty z pewnymi odchyleniami od angielskiego, więc jest bardziej powszechny w krajach takich jak USA.
perfo

39

Jeśli używasz matplotlib, musisz pokazać obraz używając, plt.show()chyba że nie jesteś w trybie interaktywnym. Na przykład:

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

Czytając inną odpowiedź, właśnie dostałem, że muszę dodać plt.show () po kodzie, który już mam, zamiast podmieniać imshow. Dzięki za pomoc.
FiReTiTi

Myślę, że to odpowiada na pytanie dokładnie w porównaniu z przyjętą odpowiedzią.
Prasad Raghavendra

23

W znacznie prostszy sposób możesz zrobić to samo za pomocą

from PIL import Image

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

1
Dziękuję za pomoc. Zainstalowałem PIL i teraz działa. Masz jakiś pomysł, dlaczego dwie metody, które wypróbowałem, nie działają?
FiReTiTi

Jeśli nie udało mi się zainstalować PIL (tak jak w przypadku mnie), wypróbuj Pillow, działał jak urok.
mrk

1
Zastanawiam się, jak import Imagedziała to stwierdzenie; nie powinno być from PIL import Image?
Laszlo Treszkai

To rozwiązanie niekoniecznie zamyka deskryptor pliku. Zamiast tego użyj go z menedżerem kontekstu:with Image.open('image.jpg') as im: im.show()
Laszlo Treszkai

Co to za Imagepakiet?
Louis Yang,

7

Korzystanie z opencv-python jest szybsze dla większej liczby operacji na obrazie:

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

To proste Użyj następującego pseudokodu

from pylab import imread,subplot,imshow,show

import matplotlib.pyplot as plt

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

plt.imshow(image)

plt.show() // to pokaże ci obraz na konsoli.


4

Twoja pierwsza sugestia działa dla mnie

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

To zawsze będzie wyświetlane jako pierwsze, jeśli istnieją również inne wykresy, dlaczego tak jest?
Christos Karapapas

1
niepewny. Nie jestem ekspertem ipython. Obraz można wyświetlić na kilka sposobów, jak widać z odpowiedzi tutaj.
Harry Moreno

3

Korzystając z Jupyter Notebook, kod może być tak prosty, jak poniżej.

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

Czasami możesz chcieć wyświetlić serię obrazów w pętli for, w takim przypadku możesz chcieć połączyć je displayi Imagesprawić, by działało.

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

2

Twój kod:

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

Co to powinno być:

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

brakuje plt.show()ci, chyba że jesteś w notatniku Jupyter, inne IDE nie wyświetlają automatycznie wykresów, więc musisz używać za plt.show()każdym razem, gdy chcesz wyświetlić działkę lub zmienić istniejącą działkę w kodzie uzupełniającym.


1
import IPython.display as display
from PIL import Image
image_path = 'my_image.jpg'
display.display(Image.open(image_path))

1

Rozwiązanie do wizualizacji obrazu PIL notebooka Jupyter z dowolną liczbą obrazów:

def show(*imgs, **kwargs):
    '''Show in Jupyter notebook one or sequence of PIL images in a row. figsize - optional parameter, controlling size of the image.
    Examples:
    show(img)
    show(img1,img2,img3)
    show(img1,img2,figsize=[8,8])
    '''
    
    if 'figsize' not in kwargs:
        figsize = [9,9]
    else:
        figsize = kwargs['figsize']
    
    fig, ax = plt.subplots(1,len(imgs),figsize=figsize)
    if len(imgs)==1:
        ax=[ax]
    
    for num,img in enumerate(imgs):
        ax[num].imshow(img)
        ax[num].axis('off')
        
    tight_layout()
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.