Seite 1 von 1
Bild Bitweise einlesen
Verfasst: Donnerstag 28. Juli 2005, 09:59
von erfurter_astronarchen
Heyho, wie kann ich ein Bild bitweise einlesen. Ich möchte nur die "einsen und nullen" des Bildes haben, geht das?
Verfasst: Donnerstag 28. Juli 2005, 10:50
von jens
mit file( r"c:\meinBild.jpg", "rb" ) kannst du jede Datei als Binärdaten einlesen... Danach interieren und jedes Zeichen in binärdaten wandeln... Wie das genau geht, weiß ich spontan auch nicht... Vielleicht hilft
http://www.python-forum.de/viewtopic.php?t=2188 weiter...
Verfasst: Donnerstag 28. Juli 2005, 11:08
von maxxle
Ich denke das kommt auf den Bildtypen an.
Wenn es sich um ein .bmp handelt kannst du es einfach mit read() einlesen.
Aber mit einem kompirimierten jpeg wird das warscheinlich etwas schwieriger, weil die Daten ja komprimiert vorliegen - das müsste man dann ja prinzipiell erst mal entkompirimieren ???
Verfasst: Donnerstag 28. Juli 2005, 11:40
von jens
Ich habe es nicht so verstanden, das jedes Bildpixel "eingelesen" werden soll, sondern ehr eine HEX-Editor ansicht der Datei...
Re: Bild Bitweise einlesen
Verfasst: Donnerstag 28. Juli 2005, 20:18
von ProgChild
erfurter_astronarchen hat geschrieben:Heyho, wie kann ich ein Bild bitweise einlesen. Ich möchte nur die "einsen und nullen" des Bildes haben, geht das?
Garnicht! Die kleinste Dateneinheit, die der Computer verschieben, kopieren oder bearbeiten kann, ist das Byte. Ein Byte sind acht Bit.
Du kannst also nur Byteweise einlesen. Wenn du die einzelnen Bits eines Bytes herrausbekommen willst, musst du mit Bitmasken und Schiebeoperatoren arbeiten.
Re: Bild Bitweise einlesen
Verfasst: Donnerstag 28. Juli 2005, 21:47
von BlackJack
erfurter_astronarchen hat geschrieben:Heyho, wie kann ich ein Bild bitweise einlesen. Ich möchte nur die "einsen und nullen" des Bildes haben, geht das?
Wenn's nicht gerade das "PBM plain" Format ist, dann ist das nicht so direkt machbar wie die anderen ja schon geschrieben haben.
Schau Dir mal die
Python Imaging Library an, damit kannst Du viele gängige Grafikformate einlesen die einzelnen Pixel auslesen.
Verfasst: Freitag 29. Juli 2005, 13:53
von Leonidas
Maxxle: egal ob BMP oder JPEG, du kannst beides Byteweise auslesen. Übrigens gibt es auch RLE komprimierte BMPs.
Verfasst: Freitag 29. Juli 2005, 21:59
von BlackJack
Kleines Beispiel mit PIL:
Code: Alles auswählen
import sys
import Image
#
# Open image and convert it to luminosity mode, i.e. grayscale.
# Then print image with asterisks and spaces.
#
img = Image.open('test.png').convert('L')
for row in xrange(img.size[1]):
for column in xrange(img.size[0]):
pixel_value = img.getpixel((column, row))
sys.stdout.write(' *'[int(pixel_value < 128)])
sys.stdout.write('\n')
Das Bild wird in Graustufen umgewandelt und je nach dem ob der Wert eines Pixels über oder unter 50% Helligkeit liegt, wird ein Leerzeichen oder ein '*' ausgegeben.