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.