найдите название цвета от шестнадцатеричного цветового кода

я хочу найти название цвета от шестнадцатеричного цветового кода. Когда я получаю шестнадцатеричный цветовой код, я хочу найти большую часть названия цвета соответствия. например, для кода #c06040, как узнать, является ли это оттенок коричневого, синего или желтого цвета?. так, чтобы я мог найти цвет объекта в изображении без человеческого вмешательства.

Есть ли какое-либо отношение между шестнадцатеричным кодом оттенков цвета? дайте некоторый пример кода, если существует кто-либо.

8
задан Sreejith Sasidharan 16 March 2010 в 09:57
поделиться

6 ответов

С исходным кодом Python распространяется программа под названием pynche , которая может это делать

Необходимые вам функциональные возможности находятся в методе ColorDB.nearest () в ColorDB.py

Из Python / Tools / README

 Введение 
 
Pynche - это редактор цвета, в значительной степени основанный на аналогичной программе, которую я 
первоначально написал еще в 1987 году для оконная система Sunview. Этот 
редактор назывался ICE, интерактивный редактор цвета. Я всегда 
хотел перенести эту программу на X, но мне не хотелось взламывать для этого X 
и C-код. Перенесемся на много лет вперед, туда, где Python + 
Tkinter предоставляет такую ​​прекрасную среду программирования с достаточной 
мощностью, что я наконец взялся за нее и повторно реализовал ее. Я 
изменил название, потому что в наши дни слишком много других систем имеют 
аббревиатуру `ICE '. 
 
Pynche должен работать с любым вариантом Python после 1.5. 2 
 (например, 2.0.1 и 2.1.1), используя Tk 8.0.x. Он был протестирован на 
Solaris 2.6, Windows NT 4 и различных дистрибутивах Linux. Вам нужно, чтобы в 
была установлена ​​версия Tk 8.0.3 для Windows не ниже. Кроме того, Pynche 
очень интенсивно использует палитру, поэтому он не очень хорошо работает на 8-битных 
видеокартах; Видеокарты 24bit + настолько дешевы в наши дни, 
я, вероятно, никогда не "исправлю" это. 
 
Pynche должен найти текстовую базу данных названий цветов, чтобы {{1} } обеспечивают соответствие цвета "ближайшему". По этой причине Pynche распространяется с файлом 
rgb.txt из дистрибутива X11R6.4 вместе с 
другой базой данных, связанной с Интернетом (см. Ниже). Вы можете использовать 
другой файл с опцией -d. Файл xlicense.txt содержит 
лицензию только для rgb.txt, и оба файла находятся в подкаталоге X / 
. 
 
Pynche произносится как Pin'-chee 
 
 
Running Автономный 
 
В Unix запустите его, запустив сценарий `pynche '. В Windows запустите 
pynche.pyw, чтобы заблокировать окно консоли. При запуске из командной строки 
распознаются следующие параметры: 
 
 --database file 
 -d file 
Альтернативное расположение цвета файл базы данных. Без этой опции 
будет использоваться первый найденный действительный файл (см. Ниже). 
 
 --initfile file 
 -i file 
Альтернативный расположение постоянного файла инициализации. См. Раздел 
о постоянстве ниже. 
 
 --ignore 
 -X 
Игнорировать постоянный файл инициализации при запуске. {{1} } Pynche по-прежнему будет записывать текущие настройки параметров в постоянный файл инициализации 
при выходе. 
 
 --help 
 -h 
Распечатать справочное сообщение. 
 
initialcolor 
название цвета Tk или спецификация цвета #rrggbb, которая будет использоваться в качестве 
первоначально выбранного цвета. Это отменяет любой цвет, сохраненный в постоянном файле инициализации 
. Поскольку "#" необходимо экранировать 
во многих оболочках, это необязательно в спецификации (например, # 45dd1f - это 
то же самое, что и 45dd1f). 
 
 { {1}} Запуск как модальный диалог 
 
Pynche можно запустить как модальный диалог внутри другого приложения, 
скажем, как средство выбора общего цвета. Фактически, Grail 0.6 использует Pynche 
, и будущая версия IDLE может также. Pynche поддерживает API 
, реализованный стандартным модулем Tkinter tkColorChooser, с 
некоторыми изменениями, как описано ниже. Импортируя pyColorChooser из 
пакета Pynche, вы можете запустить 
 
pyColorChooser.askcolor () 
 
, который откроет Pynche как модальное диалоговое окно, и вернуть выбранный цвет 
. 
 
Существуют некоторые различия пользовательского интерфейса при работе в модальном 
и автономном режиме.При работе в модальном режиме в меню «Файл» нет пункта меню «Выход» 
. Вместо этого есть кнопки "ОК" и "Отмена" 
. 
 
При нажатии кнопки "ОК" askcolor () возвращает кортеж 
 
 ((r, g, b), "name") 
 
где r, g и b - значения красного, зеленого и синего цветов 
соответственно (в диапазоне 0 до 255). "name" будет именем цвета 
из базы данных цветов, если есть точное соответствие, в противном случае 
будет спецификацией цвета X11 в форме "#rrggbb". Обратите внимание, что этот 
отличается от tkColorChooser, который ничего не знает 
о названиях цветов. 
 
askcolor () поддерживает следующие необязательные аргументы ключевого слова: {{ 1}} 
color 
цвет, который будет установлен в качестве исходного выбранного цвета 
 
master [*] 
главное окно для использования в качестве родительского модального диалога 
. Без этого аргумента pyColorChooser создаст 
свой собственный экземпляр Tkinter.Tk в качестве главного. Это может быть не 
то, что вам нужно. 
 
файл базы данных 
аналогично параметру --database, значением должно быть 
имя файла { {1}} 
initfile [*] 
аналогично параметру --initfile, значением должно быть 
имя файла 
 
ignore [ *] 
аналогично флагу --ignore, значение является логическим 
 
wantpec 
Если это правда, поле "name" в возвращаемом кортеже 
всегда будет спецификацией цвета в форме "#rrggbb". Он 
не вернет название цвета, даже если есть совпадение; 
это сделано для того, чтобы pyColorChooser мог точно соответствовать API 
tkColorChooser. 
 {{1} } [*] эти аргументы должны быть указаны при первом использовании 
askcolor () и не могут быть изменены при последующих вызовах. 
 
 
Окно Colorstrip {{ 1}} 
Верхняя часть главного окна Pynche содержит «полосы вариантов 
». Каждая полоска содержит несколько «цветных фишек».Полоски 
всегда обозначают текущий выбранный цвет выделением 
прямоугольника вокруг выбранного цветового чипа со стрелкой, указывающей 
на чип.С каждой стрелкой связано число, указывающее значение цвета 
по оси варианта. Каждая полоса вариантов 
показывает цвета, доступные для выбранного цвета, 
изменяя только одну ось сплошного цвета. 
 
Например, когда выбран выбранный цвет. цвет (в обозначении красный / зеленый / синий 
) 127/127/127, полоса вариантов красного цвета показывает все 
цвета в диапазоне от 0/127/127 до 255/127/127. Аналогично для зеленой и синей осей 
. Вы можете выбрать любой цвет, нажав на его фишку 
. Это обновит выделенный прямоугольник и стрелку, а также 
, а также другие отображения в Pynche. 
 
Нажмите «Обновить при перетаскивании», если вы хотите, чтобы Pynche обновил {{1} }} выбранный цвет при перетаскивании вдоль любой полосы вариантов (это будет 
немного медленнее). Нажмите "Шестнадцатеричный", чтобы отобразить числа стрелки 
в шестнадцатеричном формате. 
 
В этом окне также есть две кнопки быстрого доступа, которые 
автоматически выбирают черный (0 / 0/0) и белый (255/255/255). 
 
 
Окно доказательства 
 
В нижнем левом углу В главном окне вы увидите две большие цветные фишки 
. Выбранная микросхема показывает вам увеличенную версию цвета 
, выбранного в вариационных полосах, вместе с его спецификацией цвета X11 
. Микросхема Nearest показывает ближайший цвет в 
базе данных X11 к выбранному цвету, давая его спецификацию цвета X11 
, а под ним - название цвета X11. Когда 
цвет Выбранной фишки точно совпадает с цветом Ближайшей фишки, вы 
увидите, что название цвета появится под спецификацией цвета для 
Выбранной фишки. 
 {{ 1}} При нажатии на ближайшую цветовую фишку выбирается этот цвет.Расстояние цвета 
рассчитывается в трехмерном пространстве сплошного цвета RGB, и 
, если несколько названий цвета находятся на одинаковом расстоянии от выбранного цвета 
, будет найден первый найденный цвет. выбрано. 
 
Обратите внимание, что для одного и того же значения 
RGB может быть несколько названий цвета X11. В этом случае первое имя, найденное в текстовой базе данных 
, обозначается "основным" именем, и оно отображается под 
ближайшим чипом. Остальные имена являются «псевдонимами», и они видны 
в окне списка цветов (см. Ниже). 
 
Как спецификации цвета, так и названия цветов можно выбрать для {{1} } копирование и вставка в другое окно. 
 
 
Окно ввода 
 
В правом нижнем углу главного окна находятся три поля ввода . 
Здесь вы можете ввести числовые значения для любой из трех цветовых осей. 
Допустимые значения от 0 до 255, и эти поля не позволяют 
вводить недопустимые значения. Вы должны нажать Enter или Tab, чтобы выбрать 
новый цвет. 
 
Нажмите "Обновить при вводе", если вы хотите, чтобы Pynche выбирал цвет 
при каждом нажатии клавиши (ну, каждый, который дает допустимое значение 
!) Нажмите «Шестнадцатеричный», чтобы отобразить и ввести значения цвета 
в шестнадцатеричном формате. 
 
 {{1} } Другие виды 
 
Есть три дополнительных окна, которые не отображаются по умолчанию 
. Вы можете вызвать их через меню "Просмотр" в главном окне 
Pynche. 
 
 
Текстовое окно 
 
 «Текстовое окно» позволяет вам увидеть, какое влияние различные цвета 
оказывают на стандартные элементы текстового виджета Tk. В верхней части окна 
находится виджет простого текста Tk, и здесь вы можете редактировать текст 
, выбирать область текста и т. Д. Под этой кнопкой находится кнопка "Отслеживать {{1}" } цвет меняется ».Когда он включен, любые цвета, выбранные в 
других окнах, изменят элемент текстового виджета, указанный в 
переключателях ниже. Когда этот параметр отключен, на элементы 
текстового виджета не влияет выбор цвета. 
 
Вы можете выбрать, какой элемент будет изменен при выборе цвета, 
нажав на него переключателей в нижней части этого окна 
. Передний план и фон текста влияют на текст в 
верхней части окна. Передний план и фон выделения 
влияют на цвета основного выделения, которые вы видите 
, когда нажимаете среднюю кнопку (в зависимости от оконной системы) и 
перетаскиваете ее по тексту. 
 
Вставка - это курсор вставки в текстовом окне, где 
новый текст будет вставляться по мере ввода. У курсора вставки только 
есть фон. 
 
 
Окно списка цветов 
 
В окне "Список цветов" отображаются все названный цвет в базе данных названий цветов 
 (это окно может появиться через некоторое время). В верхней 
части окна вы видите прокручиваемый список всех названий цветов 
в базе данных в алфавитном порядке. Щелкните любой цвет, чтобы 
выбрать его. В нижней части окна отображаются любые 
псевдонимы для выбранного цвета (те названия цветов, которые имеют 
то же значение RGB, но были позже найдены в текстовой базе данных). Для примера 
найдите цвет "Черный", и вы увидите, что его псевдонимы 
 - gray0 и grey0. 
 
Если цвет имеет без псевдонимов вы увидите здесь "<без псевдонимов>". Если вы 
просто хотите посмотреть, есть ли у цвета псевдоним, и не хотите выбирать цвет 
при нажатии на него, отключите «Обновлять при нажатии».
 
Обратите внимание, что список цветов всегда обновляется, когда цвет выбирается 
в главном окне. Невозможно отключить эту функцию. Если 
выбранный цвет не имеет соответствующего имени цвета, вы увидите 
 «<нет соответствующего цвета>» в окне «Псевдонимы».Окно «Подробности» 
 
Окно «Подробности» дает вам больше возможностей для управления выбором цвета 
, чем просто щелкнуть по цветовой метке в главном окне. Ряд кнопок 
вверху применяет указанные значения увеличения и уменьшения 
к выбранному цвету. Эти значения дельты применяются к 
полосам вариантов, указанным флажками "Перемещение 
ползунков". Таким образом, если выбраны только красный и зеленый, нажатие -10 
вычитает 10 из значения цвета только по красному и зеленому 
варианту. Обратите внимание на сообщение под флажками; этот 
указывает, что уровень основного цвета изменяется, когда несколько ползунков 
связаны вместе. Например, если выбраны красный и зеленый 
, вы измените уровень желтого выбранного цвета 
. 
 
Поведение «На границе» определяет, что происходит, когда любой вариант цвета 
попадает в нижнюю или верхнюю границы (0 или 255) как 
в результате нажатия кнопок верхней строки: 
 
Стоп { {1}} Когда приращение или уменьшение приведет к выходу любого из связанных 
вариантов за пределы, вся дельта отбрасывается. 
 
Обертывание 
Когда при увеличении или уменьшении любой из связанных вариантов 
выходит за пределы, значение за пределами границ переносится 
на другую сторону. Таким образом, если красный был на 238 и был нажат +25 
, красный имел бы значение 7. 
 
Сохранить расстояние 
Когда приращение или уменьшение отправит любое из связанных 
вариаций вне пределов, все связанные варианты обертываются как 
, чтобы сохранить расстояние между ними.Таким образом, если 
зеленый и синий были связаны, и зеленый был бы на 238, а синий был бы на 
на 223, и нажали +25, зеленый был бы на 15, а синий 
был бы на 0. 
 
Сквош 
Когда при увеличении или уменьшении любой из связанных 
вариантов выходит за пределы, устанавливается вариант за пределами границ {{1} } до потолка 255 или пола 0, в зависимости от ситуации. Таким 
способом все связанные варианты прижимаются к одному краю или 
другому. 
 
Кнопки верхнего ряда имеют следующие ускорители клавиатуры: {{1} } 
 -25 == Shift стрелка влево 
 -10 == Control стрелка влево 
 -1 == стрелка влево 
 +1 == стрелка вправо {{1 }} +10 == Control Right Arrow 
 +25 == Shift Right Arrow 
 
 
Клавиатурные ускорители 
 
Alt- w в любом дополнительном окне закрывает окно. В главном окне 
он выходит из Pynche (кроме случаев, когда он работает как модальный). 
 
Alt-q в любом окне закрывает Pynche (кроме случаев, когда он работает как модальный). {{ 1}} 
 
Постоянство 
 
Pynche запоминает различные настройки параметров и цветов между 
вызовами, сохраняя эти значения в `постоянной инициализации {{ 1}} файл '. Фактическое расположение этого файла определяется параметром 
 --initfile (см. Выше) и по умолчанию ~ / .pynche. 
 
Когда Pynche завершает работу, он сохраняет эти значения в файле инициализации, и 
перечитывает их при запуске. В этом файле 
нет блокировки, поэтому, если вы запускаете несколько экземпляров Pynche одновременно, вы 
можете уничтожить файл инициализации. 
 
Фактические параметры сохраненные включают 
 
 - текущий выбранный цвет 
 
 - все настройки флажков и переключателей во всех окнах 
 
 - содержимое текстового окна, текущий выделенный текст и точка вставки 
, а также все настройки цвета 
текущего элемента текстового виджета.
 
 - имя файла базы данных цветов (но не его содержимое) 
 
Вы можете запретить Pynche читать файл инициализации, указав {{1} } - игнорировать параметр в командной строке. Однако вы не можете запретить 
сохранение настроек в файле инициализации при выходе из Pynche. Если 
вы действительно хотите это сделать, используйте / dev / null в качестве файла инициализации, используя 
 --initfile. 
 
 
Название цвета Файлы базы данных 
 
Pynche использует файл базы данных названий цветов для вычисления ближайшего 
цвета к выбранному цвету и для отображения в представлении списка цветов 
. Вместе с Pynche распространяется несколько файлов, описанных 
ниже. По умолчанию выбран файл базы данных названий цветов X11. 
Другие файлы: 
 
html40colors.txt - гарантированные названия цветов HTML 4.0 
 {{1} } websafe.txt - 216 "безопасных для Интернета" цветов, которые, как гарантируют Netscape и MSIE 
, не будут искажены. Они указаны в формате #rrggbb 
для значений и имен 
 
webcolors.txt - 140 названий цветов, которые Тим Питерс и его 
сестра говорят NS и Оба MSIE понимают (с некоторыми спорами по поводу 
AliceBlue). 
 
namedcolors.txt - альтернативный набор цветов Netscape. 
 
Вы можете переключаться между файлами, выбирая «Загрузить палитру ...» в 
меню «Файл». Откроется стандартное диалоговое окно с файлом Tk. 
Выберите нужный файл и нажмите "ОК". Если Pynche 
понимает формат этого файла, он загрузит базу данных и 
обновит соответствующие окна. В противном случае появится диалоговое окно с сообщением об ошибке 
. 
 
 
Что нужно сделать 
 
Вот краткий список того, что я хочу сделать (какой-то мифический день): 
 
 - Лучшая поддержка изменения размеров окон верхнего уровня 
 
 - Больше видов вывода, напримерцветные твердые тела 
 
 - имеют понятие "последний выбранный цвет"; для этого может потребоваться 
новое представление вывода 
 
 - Поддержка установки шрифта в текстовом представлении 
 
 - Поддержка distutils setup.py для установки { {1}} 
Я открыт для предложений! 
 
 
 
 
Локальные переменные: 
отступ -tabs-mode: nil 
Конец: 
 
7
ответ дан 5 December 2019 в 12:57
поделиться

Вы можете создать dict шестнадцатеричных кодов в качестве ключей и удобочитаемых имен цветов в качестве значений.

Вот эвристическая / нечеткая функция для угадывания того, как может выглядеть цвет ;)

colorof = {'f0f8ff':"Alice Blue",
           'faebd7':"Antique White",
           '000000':"Black"}

def get_color_name(hx):
    # if color is found in dict
    if colorof.has_key(hx):return colorof[hx]

    # else return its closest available color
    m = 16777215
    k = '000000'
    for key in colorof.keys():
        a = int(hx[:2],16)-int(key[:2],16)
        b = int(hx[2:4],16)-int(key[2:4],16)
        c = int(hx[4:],16)-int(key[4:],16)

        v = a*a+b*b+c*c # simple measure for distance between colors

        # v = (r1 - r2)^2 + (g1 - g2)^2 + (b1 - b2)^2

        if v <= m:
            m = v
            k = key

    return colorof[k]

print get_color_name('f0f8ff') # found in dict
print get_color_name('faeb11') # closest to Antique white
1
ответ дан 5 December 2019 в 12:57
поделиться

Эта страница в Википедии предоставляет пример поиска от имени до шестнадцатеричного кода. Было бы довольно легко искать в другом направлении. Будет ли связь между кодами и именами, которая вам подходит, зависит от вас. Вы, вероятно, найдете и другие таблицы кодов названий цветов.

0
ответ дан 5 December 2019 в 12:57
поделиться

Вот небольшой пример Я написал, что использует коэффициент Пирсона для сравнения двух цветов и выбирает наиболее похожий цвет из dict. Это решение, вероятно, не самое эффективное, но результаты должны быть неплохими:

import re
re_color = re.compile('#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})')
from math import sqrt

def color_to_rgb(color):
    return tuple(int(x, 16) / 255.0 for x in re_color.match(color).groups())

def similarity(color1, color2):
    """Computes the pearson correlation coefficient for two colors. The result
    will be between 1.0 (very similar) and -1.0 (no similarity)."""
    c1 = color_to_rgb(color1)
    c2 = color_to_rgb(color2)

    s1 = sum(c1)
    s2 = sum(c2)
    sp1 = sum(map(lambda c: pow(c, 2), c1))
    sp2 = sum(map(lambda c: pow(c, 2), c2))
    sp = sum(map(lambda x: x[0] * x[1], zip(c1, c2)))

    return (sp - (s1 * s2 / 3.0)) / sqrt((sp1 - pow(s1, 2) / 3.0) * (sp2 - pow(s2, 2) / 3.0))

color_names = {
    '#ff0000': 'red',
    '#00ff00': 'green',
    '#0000ff': 'blue'
    # add more color definitions here
}

def find_name(color):
    sim = [(similarity(color, c), name) for c, name in color_names.items()]
    return max(sim, key=lambda x: x[0])[1]

print find_name('#cc0000') # returns "red"
0
ответ дан 5 December 2019 в 12:57
поделиться

Шестнадцатеричные значения веб-цветов - это просто форма RGB. Преобразуйте свои значения RGB в HSL , а затем разделите пространство оттенков на разные цвета.

Например, значение оттенка 0-19 будет "красным", 20-39 "оранжевым", 40-59 "желтым" и т. Д. диаграмму оттенков на странице Википедии.)

Для более сложного анализа названия цвета используйте также значение «Яркость». Например, «коричневый» - это просто более темный желтый цвет.

5
ответ дан 5 December 2019 в 12:57
поделиться

На странице Википедии для веб-цветов довольно много многие из них в списке, как и w3schools и html-color-names.com с заманчивым названием. :-) И этот парень имеет очень подробную страницу о цвете в целом, и о цвете на компьютерах и в Интернете в частности. Вы можете посетить их, найти свой цветовой код и посмотреть, есть ли он в списке (а если нет, поищите близкие).

Править Я пропустил тег Python. Если вы хотите сделать это из кода, приведенное выше может оказаться не на 100% полезным. Вы могли бы построить довольно хороший ассоциативный поиск, основанный на информации с подобных сайтов, но даже с учетом того, что названия цветов несколько субъективны, похоже, что существует хороший алгоритмический подход.

0
ответ дан 5 December 2019 в 12:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: