1 (изменено: Darx, 2012-10-15 23:59:50)

Тема: AHK: Приблизительное определение цвета по оттенку

Есть определенный цвет, который мы берем с точки на экране оператором PixelGetColor
Нам не известно какой точно это будет цвет, но известно, что это будет один из оттенков оранжевого, допустим #C7430B или  #C45111 или #C64810

оттенков у оранжевого много, но есть одна закономерность, отношение цветов в палитре RGB друг к другу
как отсюда видим это превосходство красного, в половину меньше зеленого и совсем малая доля синего
для примерной точности можно взять первые цифры из шестнадцатеричного кода цвета, то есть    #  C7(красный)   43(зеленый)   0B(синий)

в первой переменной будет значение от A до E
во второй от 3 до 6
в третьей от 0 до 2

так вот вопрос, как в AHK разбить значение переменной на 3 переменные по номеру их в строчке?
то есть вычленить 2, 4 и 6 символы из переменной с цветом для дальнейшего их использования



нашел оператор SubStr(String, StartingPos [, Length]) щас буду пробовать

все работает, только оказывается формат цвета PixelGetColor возвращает в другом порядке 0 х синий зеленый красный

2 (изменено: Александр_, 2012-10-16 00:20:18)

Re: AHK: Приблизительное определение цвета по оттенку

Строки можно не привлекать, считайте, что цвет это точка в трёхмерном пространстве, а "похожесть" цветов- это расстояние между точками в этом пространстве. За расстояние можно взять сумму квадратов отклонений координат. Например:

TestValue := 0xC7430B ; тестируемое значение
msgbox % "похожесть на красный`t" test(TestValue, 0xFF0000) "`nпохожесть на  синий`t" test(TestValue, 0x00FF00) "`nпохожесть на зелёный`t" test(TestValue, 0x0000FF) "`nпохожесть на оранжевый`t" test(TestValue, 0xFF8000) "`nпохожесть на розовый`t" test(TestValue, 0xFF8080)
return

test(color1, color2)
{
   b1 := color1&255
   g1 := (color1>>8)&255
   r1 := (color1>>16)&255
   b2 := color2&255
   g2 := (color2>>8)&255
   r2 := (color2>>16)&255
   return (r1-r2)**2+(g1-g2)**2+(b1-b2)**2
}

Чем меньше значение, тем ближе цвета. Эталонные значения цветов взял из wolfram'а.

3

Re: AHK: Приблизительное определение цвета по оттенку

Darx, у нас принято пользоваться шифтом и ставить точки в конце предложений. Отредактируй свой пост.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

4

Re: AHK: Приблизительное определение цвета по оттенку

Александр_ пишет:

считайте, что цвет это точка в трёхмерном пространстве

Интересный подход.

5

Re: AHK: Приблизительное определение цвета по оттенку

да это и самы правильный подход.