Автокликер Clickermann :: Форум

Основной раздел => Предложения => Topic started by: tonu on May 15, 2020, 09:52:21 PM

Title: IF_PIXEL_INRANGE_IN
Post by: tonu on May 15, 2020, 09:52:21 PM
Очень хотелось бы видеть что-то типа IF_PIXEL_INRANGE_IN(x,y,x_,y_, l,r), который делает все то же, что и IF_PIXEL_IN, но ищет пиксель с номером между двумя заданными l и r(к примеру, мне нужно найти белый цвет, но он может быть немного серым).
Title: Re: IF_PIXEL_INRANGE_IN
Post by: tonu on May 15, 2020, 10:07:53 PM
Ах, да, colormode делает все слишком неточным для меня, да и работает дольше
Title: Re: IF_PIXEL_INRANGE_IN
Post by: Инокентий Петушарский on May 15, 2020, 11:09:51 PM
а кто вам сказал, что номера цветов в диапазоне, соответствуют выбранному вами диапазону цветов?
Прежде чем желать чего-то, хорошо-бы понимать последствия исполнения своих желаний, так-как они имеют неприятное свойство - иногда сбываться.
Title: Re: IF_PIXEL_INRANGE_IN
Post by: Инокентий Петушарский on May 16, 2020, 10:43:08 AM
Ах, да, colormode делает все слишком неточным для меня, да и работает дольше
Форумчане, перед поднятием какой-то новой темы, воспользуйтесь встроенным поисковиком по сообщениям форума, погуглите если такой способ привычнее, но не надо придумывать  дикую отсебятину и выдавать за откровение, то что давно уже придумано до вас и многократно обсуждалось людьми понимающими суть вопроса. ( в данном случае нумерация при цветообразовании у графического формата используемого программой Clickermann)
Title: Re: IF_PIXEL_INRANGE_IN
Post by: tonu on May 20, 2020, 01:32:47 AM
а кто вам сказал, что номера цветов в диапазоне, соответствуют выбранному вами диапазону цветов?
Прежде чем желать чего-то, хорошо-бы понимать последствия исполнения своих желаний, так-как они имеют неприятное свойство - иногда сбываться.
Первое предложение составил от силы пятилетний ребёнок, но отвечу на то, что я под ним понял: Между белым и бежевым разве огромный диапазон? Нет. И всё
Title: Re: IF_PIXEL_INRANGE_IN
Post by: Vint on May 20, 2020, 11:04:26 AM
что я под ним понял: Между белым и бежевым разве огромный диапазон? Нет. И всё
При восприятии байт RGBA как целое двойное слово (4 байта) мы получаем десятичное число, которое используется для кодирования цвета в кликере.
Поэтому цвета идут не подряд. Близкие цвета красного оттенка идут рядом, зелёного - разбросаны на *256 (умножить), а синего и вовсе *65536
Поэтому да, между белым и бежевым диапазон намного больше, чем между белым и голубым, точнее, светлым-цианом. Или между белым и розовым. Хотя по восприятию это не так.
Title: Re: IF_PIXEL_INRANGE_IN
Post by: Vint on May 20, 2020, 11:40:39 AM
Но функцию всё равно можно сделать. Я уже предлагал давно. Не важно как она будет называться
IF_PIXEL_DEVIATION(x, y, x2, y2, dR, dG, dB, color1, ...)
где
x, y          - числовые координаты левого верхнего угла области поиска
x2, y2      - числовые координаты правого нижнего угла области поиска
color1, ... - цвета, поиск которых будет осуществляться
 
dR           - допустимое отклонение КРАСНОЙ составляющей от значения в цвете color1. Диапазон 0-255
dG           - допустимое отклонение ЗЕЛЁНОЙ составляющей от значения в цвете color1. Диапазон 0-255
dB           - допустимое отклонение СИНЕЙ     составляющей от значения в цвете color1. Диапазон 0-255
Title: Re: IF_PIXEL_INRANGE_IN
Post by: Vint on May 20, 2020, 11:58:50 AM

Для точечной проверки отдельных пикселей, можно и сейчас применять существующий функционал. Для поиска, конечно не годится, скорость низкая.

Code: (clickermann) [Select]
//эталонный цвет
$col = 14483455

// допуск по каналам
$dR = 0
$dG = 5
$dB = 35

//берём пиксель
GETSCREEN
$p = PXL(200,300)

IF((ABS(COLORR($col) - COLORR($p)) <= $dR) & (ABS(COLORG($col) - COLORG($p)) <= $dG) & (ABS(COLORB($col) - COLORB($p)) <= $dB))
    print("Подходит")
ELSE
    print("НЕ подходит")
END_IF

HALT