На этот вопрос можно ответить разными способами.Это действительно зависит от двух вещей:
- каков ваш базовый пул цветов и
- что мера сходства вы хотитеиспользовать (т. е. как должна выглядеть функция перевода (сопоставления) из произвольного цвета в базовый) - то же, что и
webcolors
из указанного вопроса, или отличается?
Например,одним очень простым подходом будет 'red'
, 'green'
, 'blue'
, поскольку ваш пул цветов и функция перевода могут проверять красные, зеленые и синие компоненты цвета и возвращать, какой бы ни был максимальный.Например, для цвета RGB(128, 0, 0)
(темно-бордовый) вы должны вернуть 'red'
, поскольку красный компонент является наиболее заметным.(Тем не менее, что вы будете делать, если два или все три компонента присутствуют одинаково? Это то, что вам также необходимо определить.)
Другое решение, если количество цветов, с которыми вы можете столкнуться, ограничено,чтобы создать словарь, который отображает ваш входной цвет на один из ваших базовых цветов: {'maroon': 'red', 'cadet blue': 'blue', ...}
и используйте его.
Решение действительно зависит от того, как вы определяете проблему.Две точки в начале могут помочь с этим.