Я использую Python и PIL.
У меня есть изображения в RGB, и я хотел бы знать тех, которые содержат только один цвет (например, # FF0000) или несколько очень близких цветов (# FF0000 и # FF0001).
Я думал об использовании гистограммы, но с 3 цветными полосами очень сложно что-то выяснить, поэтому я ищу более умный алгоритм.
Есть идеи?
Модуль ImageStat - это ответ! Спасибо Аарон.
Я использую ImageStat.var, чтобы получить дисперсию, и она отлично работает.
Вот мой кусок кода:
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)