Moin,
ich lese .jpg Bilder über Images.Open() ein und danach transformiere ich sie. Sie sind danach vom type torch.floattensor. Nach der Transformation würde ich mir die Bilder aber gerne nochmal anschauen.
Ich habe versucht den torch.floattensor in ein numpy array umzuwandeln und dieses dann über imshow() aus der matplotlib anzuzeigen. Dabei bekomme ich aber folgende Fehlermeldung:
TypeError: Invalid dimensions for image data
Ich habe jetzt mal im Internet geschaut und versucht rauszubekommen was das mit der Dimension auf sich hat. Dabei habe ich gefunden, dass imshow() das Bild wohl im Format (Höhe, Breite, 3) braucht. (Für ein RGB Bild) Mein transformiertes Bild also der floattensor befindet sich aber in dem Format (3,Höhe,Breite).
Wie ich nun den floattensor von (3,Höhe,Breite) zu (Höhe, Breite, 3) bekomme, konnte ich leider nirgends finden.
Ich würde mich darüber freuen wenn mir jemand eine Anregung oder einen Hinweis bezüglich der Umwandlung geben könnte. Falls jemand eine andere Idee hat die Bilder nach der Transformation wiederzugeben bin ich dafür auch offen.
Mit freundlichen Grüßen
Dimensionen eines floattensors tauschen
Danke narpfel.
Jetzt habe ich das numpy array in den Format (Höhe, Breite, 3) und bekomme auch keinen Fehler mehr von imshow(). Nur zeigt er mir trotzdem nichts an. Also es öffnet sich nicht mal ein weiße Fenster oder so.
Das ist der Code den ich dazu habe. f ist der Dateiname eines Bildes, welcher vorher ausgewählt wird. Wüsste jetzt nicht was noch fehlt, dass das transformierte Bild auch angezeigt wird
Jetzt habe ich das numpy array in den Format (Höhe, Breite, 3) und bekomme auch keinen Fehler mehr von imshow(). Nur zeigt er mir trotzdem nichts an. Also es öffnet sich nicht mal ein weiße Fenster oder so.
Code: Alles auswählen
img = Image.open('Images/' + f)
img_tensor = transform(img)
img_tensor = img_tensor.numpy()
img_tensor= np.transpose(img_tensor,(1,2,0))
plt.imshow(img_tensor)