Zeigen Sie ein Bild mit Python an


104

Ich habe versucht, IPython.display mit dem folgenden Code zu verwenden:

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

Ich habe auch versucht, matplotlib mit dem folgenden Code zu verwenden:

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

In beiden Fällen wird nichts angezeigt, nicht einmal eine Fehlermeldung.

Antworten:


204

Wenn Sie matplotlib verwenden und das Bild in Ihrem interaktiven Notizbuch anzeigen möchten, versuchen Sie Folgendes:

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

Vielen Dank für Ihre Antwort, es funktioniert fast :-) Das Bild wird angezeigt, aber die Graustufen werden durch eine Feuerlute ersetzt. Irgendeine Idee?
FiReTiTi

3
Versuchen Sie, die Farbkarte explizit zu definieren: plt.imshow (lum_img, cmap = "grey")
Joe Bathelt

3
Nach meinem Verständnis erzeugt der letzte Befehl plt.show () die Anzeige. Zuvor konnten Sie dem Plot etwas hinzufügen, z. B. indem Sie dem Bild Ebenen hinzufügen. Ich empfehle das Matplotlib-Bild-Tutorial als Referenz: matplotlib.org/users/image_tutorial.html
Joe Bathelt

5
Vielen Dank für Ihre Antworten, jetzt funktioniert es perfekt! Nur ein paar Details für die potentiellen Leser, es ist "grau" statt "grau".
FiReTiTi

Nein, Grau ist die richtige und originelle Schreibweise. Gray wurde in einigen Abweichungen des Englischen übernommen und ist daher in Ländern wie den USA häufiger anzutreffen.
Perfo

37

Wenn Sie verwenden matplotlib, müssen Sie das Bild mit plt.show()anzeigen , es sei denn, Sie befinden sich nicht im interaktiven Modus. Z.B:

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

Als ich eine andere Antwort las, bekam ich gerade, dass ich plt.show () nach dem Code hinzufügen muss, den ich bereits habe, anstatt die imshow zu ersetzen. Danke für Ihre Hilfe.
FiReTiTi

Ich denke, dies beantwortet die Frage genau im Vergleich zur akzeptierten Antwort.
Prasad Raghavendra

21

Auf viel einfachere Weise können Sie dasselbe mit tun

from PIL import Image

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

1
Danke für deine Hilfe. Ich habe PIL installiert und jetzt funktioniert es. Irgendeine Idee, warum die beiden Methoden, die ich ausprobiert habe, nicht funktionierten?
FiReTiTi

Wenn Sie PIL nicht installieren konnten (wie es bei mir der Fall war), versuchen Sie es mit Pillow. Es hat für mich wie ein Zauber funktioniert.
Mrk

1
Ich frage mich, wie die import ImageAussage funktioniert. sollte es nicht sein from PIL import Image?
Laszlo Treszkai

Diese Lösung schließt den Dateideskriptor nicht unbedingt. Verwenden Sie es stattdessen mit einem Kontextmanager:with Image.open('image.jpg') as im: im.show()
Laszlo Treszkai

Was ist das für ein ImagePaket?
Louis Yang

5

Die Verwendung von opencv-python ist schneller, um mehr Bildbearbeitung zu ermöglichen:

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

Es ist einfach Verwenden Sie folgenden Pseudocode

from pylab import imread,subplot,imshow,show

import matplotlib.pyplot as plt

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

plt.imshow(image)

plt.show() // Dies zeigt dir das Bild auf der Konsole.


4

Ihr erster Vorschlag funktioniert für mich

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

Dies wird immer zuerst angezeigt, wenn es auch andere Diagramme gibt. Warum ist das so?
Christos Karapapas

1
nicht sicher. Ich bin kein Ipython-Experte. Es gibt verschiedene Möglichkeiten, ein Bild anzuzeigen, wie Sie den Antworten hier entnehmen können.
Harry Moreno

2

Mit Jupyter Notebook kann der Code so einfach wie folgt sein.

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

Manchmal möchten Sie möglicherweise eine Reihe von Bildern in einer for-Schleife anzeigen. In diesem Fall möchten Sie sie möglicherweise kombinieren displayund Imagezum Funktionieren bringen.

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

1

Dein Code:

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

Was es sein sollte:

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

Sie sind vermisst , plt.show()wenn Sie in Jupyter Notebook, andere IDE sind nicht automatisch Plots angezeigt , so dass Sie verwenden müssen , um plt.show()jedes Mal , wenn Sie ein Grundstück angezeigt werden soll oder eine Änderung an einem bestehenden Grundstück gemacht in Follow - up - Code.


1
import IPython.display as display
from PIL import Image
image_path = 'my_image.jpg'
display.display(Image.open(image_path))
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.