Hallo zusammen,
Zunächst: ich bin absoluter Python-Neuling aber habe in einem Seminar gerade eine für mich scheinbar unlösbare Aufgabe bekommen...
Ich habe eine PGN-Bilddatei von einem schwarz-weiß-Bild, die ich nun transformieren soll. Hierfür habe ich die Datei zunächst geöffnet:
image = skimage.io.imread(Pfad/zu/"Datei.pgn")
und würde sie nun gerne mit skimage.transform transformieren.
Das Problem hieran ist nun, dass ich nicht weiß, welches der Module dafür geeignet ist, ich habe es bisher mit SimilarityTransform versucht. Da bekomme ich aber die Fehlermeldung "Invalid shape of transformation matrix".
Zudem soll nach der Anwendung der Transformation der Maskenbereich schwarz sein und der Hintergrund weiß.
Kann mir jemand dabei helfen? Ich bin wirklich ratlos...
Tausend Dank schonmal.
Bild transformieren
- __blackjack__
- User
- Beiträge: 13100
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Python_2018: Ich vermute mal Du meinst PNG (Portable Network Graphic) statt PGN (Portable Game Notation)‽
Also der Fehlermeldung nach stimmt die Form der Transformationsmatrix nicht. Welche Form hat denn Deine Matrix?
Ansonsten kann man ohne irgendwelche Information sehr schlecht irgendwas zu den Problemen sagen.
Also der Fehlermeldung nach stimmt die Form der Transformationsmatrix nicht. Welche Form hat denn Deine Matrix?
Ansonsten kann man ohne irgendwelche Information sehr schlecht irgendwas zu den Problemen sagen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
-
- User
- Beiträge: 3
- Registriert: Dienstag 17. Juli 2018, 13:56
Hallo
Ja, das ist richtig, bitte entschuldige den Schreibfehler.
Ich wollte für die Transformation erstmal eine Matrix der Form
M=1,0,0
0,1,0
0,0,1
nehmen, da mit dem Bild dann ja ersteinmal nichts passiert, einfach um mach herauszufinden, wie die Befehle so funktionieren und was für Argumente sie brauchen.
Vielleicht scheitere ich auch schon am Erstellen der Matrix.
Wenn ich die Marix so erstelle:
a=[[1,0,0], [0,1,0], [0,0,1]]
bekomme ich die Fehlermeldung "'list' object has no attribute 'shape'".
Daher habe ich ein CSV-file mit der entsprechenden Matrix erstellt, welches ich dann einlese mit:
mask = pd.read_csv("test.csv", "rb", engine="python", delimiter=",", header=None)
Das funktioniert aber leider auch nicht so wie gedacht.
Bisher habe ich nur ein wenig mit R programmiert, daher bin ich mit der Syntax und allem in Python leider noch nicht so vertraut.
Ja, das ist richtig, bitte entschuldige den Schreibfehler.
Ich wollte für die Transformation erstmal eine Matrix der Form
M=1,0,0
0,1,0
0,0,1
nehmen, da mit dem Bild dann ja ersteinmal nichts passiert, einfach um mach herauszufinden, wie die Befehle so funktionieren und was für Argumente sie brauchen.
Vielleicht scheitere ich auch schon am Erstellen der Matrix.
Wenn ich die Marix so erstelle:
a=[[1,0,0], [0,1,0], [0,0,1]]
bekomme ich die Fehlermeldung "'list' object has no attribute 'shape'".
Daher habe ich ein CSV-file mit der entsprechenden Matrix erstellt, welches ich dann einlese mit:
mask = pd.read_csv("test.csv", "rb", engine="python", delimiter=",", header=None)
Das funktioniert aber leider auch nicht so wie gedacht.
Bisher habe ich nur ein wenig mit R programmiert, daher bin ich mit der Syntax und allem in Python leider noch nicht so vertraut.
Das erste ist eine Python Liste von Listen. Den Code den du nicht zeigst der die Fehlermeldung liefert erwartet aber offensichtlich eine numpy.matrix. Ein simples
m = numpy.array(a)
wobei a deine oben gezeigte Matrix ist sollte genügen.
m = numpy.array(a)
wobei a deine oben gezeigte Matrix ist sollte genügen.
-
- User
- Beiträge: 3
- Registriert: Dienstag 17. Juli 2018, 13:56
Ah, ok. Super, dann habe ich das jetzt verstanden. Danke!
Wenn es nicht zu sehr stört, hätte ich noch eine Frage zu der skimage.transform funktion.
Ich habe gefunden, dass das Modul SimilarityTransform diese Argumente besitzt:
matrix, scale, rotation, translation
Wo gebe ich denn mein ursprüngliches Bild ein? Weil die Matrix enthält ja die Werte, mit denen mein Bild transformiert werden soll, oder?
Wenn es nicht zu sehr stört, hätte ich noch eine Frage zu der skimage.transform funktion.
Ich habe gefunden, dass das Modul SimilarityTransform diese Argumente besitzt:
matrix, scale, rotation, translation
Wo gebe ich denn mein ursprüngliches Bild ein? Weil die Matrix enthält ja die Werte, mit denen mein Bild transformiert werden soll, oder?
- __blackjack__
- User
- Beiträge: 13100
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Das Objekt ist aufrufbar, allerdings erwartet es dabei kein Bild, sondern ein Array mit 2D-Koordinaten. Schau Dir vielleicht mal die `warp()`-Funktion an.
`skimage.transform` ist übrigens keine Funktion sondern ein Modul.
`skimage.transform` ist übrigens keine Funktion sondern ein Modul.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman