Вы можете использовать PIL вместе с веб-цветами , чтобы получить статистику цвета для изображения:
import webcolors
from PIL import Image
from collections import Counter
def get_colour_name(requested_colour):
try:
return webcolors.rgb_to_name(requested_colour)
except ValueError:
min_colours = {}
for key, name_ in webcolors.css3_hex_to_names.items():
r_c, g_c, b_c = webcolors.hex_to_rgb(key)
rd = (r_c - requested_colour[0]) ** 2
gd = (g_c - requested_colour[1]) ** 2
bd = (b_c - requested_colour[2]) ** 2
min_colours[(rd + gd + bd)] = name_
return min_colours[min(min_colours.keys())]
image = Image.open('image.jpg')
pixels = image.load()
w, h = image.size
colors = []
for x in range(w):
for y in range(h):
colors.append(get_colour_name(pixels[x, y]))
for i, c in enumerate(Counter(colors).most_common(5)):
print('{}. {:15} {:>2.1f}%'.format(i+1, c[0], c[1] * 100 / len(colors)))
Например, для следующего изображения:
5 самых распространенных цветов:
1. crimson 10.3%
2. maroon 9.8%
3. darkslategrey 9.2%
4. dimgrey 8.4%
5. grey 8.1%