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?
img_neu ist dann ein Farbbild mit rot = rot-grün.
Wem das mit den slices zu komisch ist:
1
r,g,b= np.transpose(img, (2,0,1))
2
img_neu = np.transpose([r-g,g,b], axes=(1,2,0))
Python und numpy haben hier recht verschiedene Ansätze davon, wie sowas
funktioniert. Wenn man bei numpy list comprehensions braucht, macht man
i.d.R. was falsch.
cool,
ich habe aber jetzt das Gefühl ich sollte unbedingt versuchen nicht zu
schnell zu viel anzugehen und eins nach dem anderen zu begreifen.
Nachher ist alles ein kunterbunter Mix als halbgarem Zeug was dann noch
schwieriger ist zu ordnen.
Jeder weiß ja dass lesen und nachvollziehen was anderes ist als aktiv
tun. Aber bis jetzt mag ich trotz eine gewissen Ähnlichkeit die matlab
Notation mehr. Mag Gewohnheit sein.
Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
Groß- und Kleinschreibung verwenden
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang