Hi! Ich bin ziemlich neu in Python (3). Möchte gerne in Zukunft damit besser zurecht kommen und Sachen die ich früher mit Matlab gemacht habe mit Python erschlagen. Ist aber ein ziemlicher Brocken. Die Matlab-Phse an sich ist schon etwas her und ich tue mich traditionell etwas schwer mit Skript-Sprachen. Speziell die Art wie in Python Arrays verarbeitet werden gewinnt derzeit noch gegen mein Hirn. Anscheinend. Also das paket numpy habe ich als sinnvolle Matlab alternative gefunden und probiere rum. Aber wie gesagt durch meinen Lernstatus kommt da anscheinend einiges durcheinander. Wäre froh um Erhellung! Im Beispiel wollte ich ursprünglich bei einem Bild den Rot-Kanal vom Grün-Kanal abziehen. Ohne Sinn - nur um besser rein zu kommen. Ist aber grandios gescheitert ich schaffe es nicht mal über das geladene Bild Pixelweise zu iterieren. Folgender Code wird ausgeführt (immerhin) aber das Bild stimmt nicht mit original überein. Jeweils Pixel subtrahieren schaffe ich gar nicht:
1 | import matplotlib.pyplot as plt |
2 | import matplotlib.image as mpimg |
3 | import numpy as np |
4 | |
5 | image_path = "tst.bmp" |
6 | |
7 | im = mpimg.imread(image_path) |
8 | |
9 | im_neu = np.array([im[x,y,:] for y in range(im.shape[1]) for x in range(im.shape[0])]) |
10 | #mentale Zerrung-wie gehts? MUSS ich zwingend noch mal in np.array zurück wandeln? #Kann ich nicht auf Array-Ebene bleiben und wie 'ginge' das mit einer #liste richtig? |
11 | |
12 | im_neu = np.reshape( im_neu, (im.shape[0],im.shape[1],3) ) |
13 | #Leider Dimension verloren |
14 | |
15 | plt.imshow(im_neu) |
Wie geht das und wo ist mein Verständnisfehler?