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.

FiReTiTi
quelle

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()
Joe Bathelt
quelle
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
MaxPowers
quelle
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()
the_unknown_spirit
quelle
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()
Qhan
quelle
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.

Ayush Srivastava
quelle
4

Ihr erster Vorschlag funktioniert für mich

from IPython.display import display, Image
display(Image(filename='path/to/image.jpg'))
Harry Moreno
quelle
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'))
Fei Yao
quelle
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.

Rohit Madan
quelle
1
import IPython.display as display
from PIL import Image
image_path = 'my_image.jpg'
display.display(Image.open(image_path))
Rajan saha Raju
quelle