Seite 1 von 1

Erkennen, ob ein RGB-Bild schwarzweiss ist

Verfasst: Montag 9. April 2007, 18:40
von fhoech
Hallo, ich habe ein kleines Python-Skript geschrieben, mit dem man herausfinden kann, ob ein RGB-Bild schwarzweiss (Graustufen) oder farbig ist. Mich interessiert nun, obs vielleicht noch eine bessere Methode gibt als die, die ich benutzt habe (Vergleich der R-G-B-Kanäle als String, wenn identisch, ist das Bild monochrom). Hier mein Skript:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*- 

from PIL import Image

img = Image.open('Beispielbild.tif')
channels = img.split()
r = channels[0].tostring()
g = channels[1].tostring()
b = channels[2].tostring()
if r == g == b: print 'S/W'
else: print 'Farbe'
Performance ist eigentlich recht gut, dass öffnen/laden des Bildes nimmt die meiste Zeit in Anspruch und da komm ich wohl nicht drumrum. Aber wer weiss, vielleicht gehts ja noch eleganter?

Verfasst: Montag 9. April 2007, 18:50
von Leonidas
Ich würde es so schreiben, um die expressiven Möglichkeiten von Python mehr zu nutzen:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from PIL import Image

img = Image.open('Beispielbild.tif')
red, green, blue = [channel.tostring() for channel in img.split()]
if red == green == blue:
    print 'S/W'
else:
    print 'Farbe'

Verfasst: Dienstag 10. April 2007, 20:54
von fhoech
Prima, vielen Dank! Werde ich so übernehmen.