Seite 1 von 1

[Python, Numpy, PIL] Probleme bei der Bildgenerierung

Verfasst: Donnerstag 18. April 2013, 13:20
von djtschke
Hallo Zusammen,

ich stehe vor einem Problem das ich mir nicht ganz erklären kann:

Ich möchte aus einem zweidimensionalen Numpy Array mit dem PIL Modul ein Bilder erstellen.
Um das ganze zu testen bin ich erstmal im Kleinstbereich unterwegs, was heisst dass ich vorerst einen Bereich von 4x4 Pixel in ein
Bild schreib das eigentlich 600x700 Pixel groß ist.

Zu allererst habe ich mir ein leeres Numpy Array von der Größe 600x700 generiert.
In dieses schreibe ich dann für den 4x4 Pixelbereich unterschiedliche Farbwerte. Dies funktioniert wunderbar, was
ich über eine Ausgabe getestet habe:

70.0 Koordinaten: 0 0
69.0 Koordinaten: 0 1
69.0 Koordinaten: 0 2
66.0 Koordinaten: 0 3
69.0 Koordinaten: 1 0
69.0 Koordinaten: 1 1
70.0 Koordinaten: 1 2
66.0 Koordinaten: 1 3
68.0 Koordinaten: 2 0
70.0 Koordinaten: 2 1
67.0 Koordinaten: 2 2
67.0 Koordinaten: 2 3
67.0 Koordinaten: 3 0
66.0 Koordinaten: 3 1
67.0 Koordinaten: 3 2
64.0 Koordinaten: 3 3

Wenn ich nun das bild mit folgendem befehl erzeuge:

Code: Alles auswählen

myImage = pImage.fromstring('L', (myImageArray.shape[1], myImageArray.shape[0]), myImageArray.tostring())
werden im entstehenden bild für jeden Pixel 3 Grauwerte angezeigt und zwischen den Pixeln sind breite schwarze abstände.
Der gezeichnete Bereich verrgößert sich dadurch auch auf 32x25 statt 4x4 Pixel.

Es wäre toll wenn mir jemand weiterhelfen könnte!
Wenn der letzt Teil etwas unverständlich sein sollte kann ich noch ein Bild nachliefern.

Vielen Dank schon einmal!

Max

Re: [Python, Numpy, PIL] Probleme bei der Bildgenerierung

Verfasst: Donnerstag 18. April 2013, 13:29
von BlackJack
@djtschke: Versuch doch als erstes mal die `PIL.Image.fromarray()`-Methode. Und wenn Du unbedingt den Modus mit 'L' vorgeben willst, dann muss es sich um ein Array mit 8-Bit Werten handeln welches da übergeben wird und keine Gleitkommazahlen. Dafür haben `numpy`-Arrays die `astype()`-Methode. Du musst vorher natürlich dafür sorgen, dass Deine Werte sinnvoll in das Intervall 0 bis 255 abgebildet werden.

Re: [Python, Numpy, PIL] Probleme bei der Bildgenerierung

Verfasst: Donnerstag 18. April 2013, 13:42
von djtschke
Yep, int8 was das Zauberwort. Der hat die 8bit Farbwerte als float eingelesen, das hat dann zu dem mist geführt.
Teufel mal wieder im Detail.

1000 Dank !!

LG

Max