Автор Тема: IF_PIXEL_INRANGE_IN  (Прочитано 464 раз)

0 Пользователей и 1 Гость просматривают эту тему.

tonu

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

tonu

  • Зашел в гости
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: IF_PIXEL_INRANGE_IN
« Ответ #1 : Май 15, 2020, 10:07:53 pm »
Ах, да, colormode делает все слишком неточным для меня, да и работает дольше
« Последнее редактирование: Май 15, 2020, 10:12:49 pm от tonu »

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

  • Зашел в гости
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: IF_PIXEL_INRANGE_IN
« Ответ #2 : Май 15, 2020, 11:09:51 pm »
а кто вам сказал, что номера цветов в диапазоне, соответствуют выбранному вами диапазону цветов?
Прежде чем желать чего-то, хорошо-бы понимать последствия исполнения своих желаний, так-как они имеют неприятное свойство - иногда сбываться.

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

  • Зашел в гости
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: IF_PIXEL_INRANGE_IN
« Ответ #3 : Май 16, 2020, 10:43:08 am »
Ах, да, colormode делает все слишком неточным для меня, да и работает дольше
Форумчане, перед поднятием какой-то новой темы, воспользуйтесь встроенным поисковиком по сообщениям форума, погуглите если такой способ привычнее, но не надо придумывать  дикую отсебятину и выдавать за откровение, то что давно уже придумано до вас и многократно обсуждалось людьми понимающими суть вопроса. ( в данном случае нумерация при цветообразовании у графического формата используемого программой Clickermann)
« Последнее редактирование: Май 20, 2020, 04:42:25 pm от Oraven »

tonu

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

Vint

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


Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3475
  • Лечу куда хочу. cman 4.13.014x32, W10, W7
    • Просмотр профиля
Re: IF_PIXEL_INRANGE_IN
« Ответ #6 : Май 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
« Последнее редактирование: Май 20, 2020, 11:58:45 am от Vint »


Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3475
  • Лечу куда хочу. cman 4.13.014x32, W10, W7
    • Просмотр профиля
Re: IF_PIXEL_INRANGE_IN
« Ответ #7 : Май 20, 2020, 11:58:50 am »

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

Код: Clickermann
  1. //эталонный цвет
  2. $col = 14483455
  3.  
  4. // допуск по каналам
  5. $dR = 0
  6. $dG = 5
  7. $dB = 35
  8.  
  9. //берём пиксель
  10. GETSCREEN
  11. $p = PXL(200,300)
  12.  
  13. IF((ABS(COLORR($col) - COLORR($p)) <= $dR) & (ABS(COLORG($col) - COLORG($p)) <= $dG) & (ABS(COLORB($col) - COLORB($p)) <= $dB))
  14.    print("Подходит")
  15. ELSE
  16.    print("НЕ подходит")
  17. END_IF
  18.  
  19. HALT