Ich verwende Python und PIL.
Ich habe Bilder in RGB und möchte wissen, welche Bilder nur eine Farbe (z. B. #FF0000) oder einige sehr nahe beieinander liegende Farben (#FF0000 und #FF0001) enthalten.
Ich dachte an die Verwendung des Histogramms, aber es ist sehr schwierig, etwas mit den 3 Farbbändern herauszufinden, also suche ich nach einem clevereren Algorithmus.
Irgendwelche Ideen?
Das ImageStat-Modul ist DIE Antwort! Vielen Dank, Aaron. Ich verwende ImageStat.var, um die Varianz zu erhalten, und es funktioniert perfekt.
Hier ist mein Teil des Codes:
from PIL import Image, ImageStat
MONOCHROMATIC_MAX_VARIANCE = 0.005
def is_monochromatic_image(src):
v = ImageStat.Stat(Image.open(src)).var
return reduce(lambda x, y: x and y < MONOCHROMATIC_MAX_VARIANCE, v, True)