Author Topic: IF_PIXEL_INRANGE_IN  (Read 6879 times)

0 Members and 1 Guest are viewing this topic.

tonu

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
IF_PIXEL_INRANGE_IN
« on: May 15, 2020, 09:52:21 PM »
Очень хотелось бы видеть что-то типа IF_PIXEL_INRANGE_IN(x,y,x_,y_, l,r), который делает все то же, что и IF_PIXEL_IN, но ищет пиксель с номером между двумя заданными l и r(к примеру, мне нужно найти белый цвет, но он может быть немного серым).

tonu

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Re: IF_PIXEL_INRANGE_IN
« Reply #1 on: May 15, 2020, 10:07:53 PM »
Ах, да, colormode делает все слишком неточным для меня, да и работает дольше
« Last Edit: May 15, 2020, 10:12:49 PM by tonu »

Инокентий Петушарский

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
Re: IF_PIXEL_INRANGE_IN
« Reply #2 on: May 15, 2020, 11:09:51 PM »
а кто вам сказал, что номера цветов в диапазоне, соответствуют выбранному вами диапазону цветов?
Прежде чем желать чего-то, хорошо-бы понимать последствия исполнения своих желаний, так-как они имеют неприятное свойство - иногда сбываться.

Инокентий Петушарский

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
Re: IF_PIXEL_INRANGE_IN
« Reply #3 on: May 16, 2020, 10:43:08 AM »
Ах, да, colormode делает все слишком неточным для меня, да и работает дольше
Форумчане, перед поднятием какой-то новой темы, воспользуйтесь встроенным поисковиком по сообщениям форума, погуглите если такой способ привычнее, но не надо придумывать  дикую отсебятину и выдавать за откровение, то что давно уже придумано до вас и многократно обсуждалось людьми понимающими суть вопроса. ( в данном случае нумерация при цветообразовании у графического формата используемого программой Clickermann)
« Last Edit: May 20, 2020, 04:42:25 PM by Oraven »

tonu

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Re: IF_PIXEL_INRANGE_IN
« Reply #4 on: May 20, 2020, 01:32:47 AM »
а кто вам сказал, что номера цветов в диапазоне, соответствуют выбранному вами диапазону цветов?
Прежде чем желать чего-то, хорошо-бы понимать последствия исполнения своих желаний, так-как они имеют неприятное свойство - иногда сбываться.
Первое предложение составил от силы пятилетний ребёнок, но отвечу на то, что я под ним понял: Между белым и бежевым разве огромный диапазон? Нет. И всё

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: IF_PIXEL_INRANGE_IN
« Reply #5 on: May 20, 2020, 11:04:26 AM »
что я под ним понял: Между белым и бежевым разве огромный диапазон? Нет. И всё
При восприятии байт RGBA как целое двойное слово (4 байта) мы получаем десятичное число, которое используется для кодирования цвета в кликере.
Поэтому цвета идут не подряд. Близкие цвета красного оттенка идут рядом, зелёного - разбросаны на *256 (умножить), а синего и вовсе *65536
Поэтому да, между белым и бежевым диапазон намного больше, чем между белым и голубым, точнее, светлым-цианом. Или между белым и розовым. Хотя по восприятию это не так.
« Last Edit: May 20, 2020, 11:11:00 AM by Vint »


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: IF_PIXEL_INRANGE_IN
« Reply #6 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
« Last Edit: May 20, 2020, 11:58:45 AM by Vint »


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: IF_PIXEL_INRANGE_IN
« Reply #7 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