Erkennen, ob ein RGB-Bild schwarzweiss ist

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
fhoech
User
Beiträge: 143
Registriert: Montag 9. April 2007, 18:26

Erkennen, ob ein RGB-Bild schwarzweiss ist

Beitragvon fhoech » Montag 9. April 2007, 18:40

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?
Zuletzt geändert von fhoech am Montag 9. April 2007, 18:59, insgesamt 2-mal geändert.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 9. April 2007, 18:50

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'
My god, it's full of CARs! | Leonidasvoice vs Modvoice
fhoech
User
Beiträge: 143
Registriert: Montag 9. April 2007, 18:26

Beitragvon fhoech » Dienstag 10. April 2007, 20:54

Prima, vielen Dank! Werde ich so übernehmen.

Wer ist online?

Mitglieder in diesem Forum: __deets__, Google [Bot]