Перейти к основному содержимому

Поиск цвета на изображении (:find_color)

Объявление

координата_x, координата_y = изображение:find_color({
[find_all = искать_несколько_результатов,]
[max_results = максимальное_число_результатов,]
[max_miss = допустимое_число_пропусков,]
[find_order = порядок_поиска_цвета,]
[csim_algorithm = алгоритм_сходства_цветов,]
{начальная_координата_x, начальная_координата_y, начальный_цвет[, начальное_сходство]},
{смещение_x*, смещение_y*, смещение_цвета*[, смещение_сходства*]},
{смещение_x*, смещение_y*, смещение_цвета*[, смещение_сходства*]},
...
} [, общее_сходство, слева, сверху, справа, снизу ])

Параметры

  • искать_несколько_результатов
    Логическое значение, необязательный параметр. Если этот флаг имеет значение true, возвращается таблица всех совпавших положений в области в формате {{x1, y1}, {x2, y2}, ...}; по умолчанию false

  • максимальное_число_результатов
    Целое число, необязательный параметр. Если find_all (поиск нескольких результатов) имеет значение true, задаёт максимальное число возвращаемых результатов; максимум — 1000, по умолчанию 100

  • допустимое_число_пропусков
    Целое число, необязательный параметр, максимально допустимое число несовпавших точек; по умолчанию 0, то есть результат считается найденным только при полном совпадении

  • порядок_поиска_цвета
    Целое число, необязательный параметр, порядок поиска цвета, диапазон 1~8, по умолчанию 1

    Значения порядка поиска цвета
    1 — сверху вниз, затем слева направо
    2 — слева направо, затем сверху вниз
    3 — справа налево, затем сверху вниз
    4 — сверху вниз, затем справа налево
    5 — снизу вверх, затем справа налево
    6 — справа налево, затем снизу вверх
    7 — слева направо, затем снизу вверх
    8 — снизу вверх, затем слева направо

    У функции поиска цвета на экране screen.find_color этого поля нет
    Пример порядка поиска цвета

  • алгоритм_сходства_цветов (поддерживается начиная с версии 20250302)
    Целое число, необязательный параметр, алгоритм сходства цветов, по умолчанию 0

    Алгоритмы сходства цветов
    0 — алгоритм XXT по умолчанию, с крутым градиентом; разность быстро снижает сходство
    1 — манхэттенский алгоритм, плавный градиент
    2 — евклидов алгоритм, плавный градиент
  • начальная_координата_x, начальная_координата_y
    Целые числа, начальные координаты. Они не ограничивают поиск цвета одной фиксированной точкой, а задают относительную систему координат для точек смещения. Если смещение не используется, укажите 0, 0

  • начальный_цвет
    Целое число, цвет точки, которую нужно искать

  • начальное_сходство
    Целое число, необязательный параметр, сходство цвета искомой точки в диапазоне 1~100, по умолчанию 100

  • смещение_x*, смещение_y*
    Целые числа, координаты точки смещения

  • смещение_цвета*
    Целое число, цвет, которому должна соответствовать точка смещения

  • смещение_сходства*
    Целое число, необязательный параметр, сходство цвета в точке смещения в диапазоне -100~100, по умолчанию 100. Отрицательное значение означает совпадение со сходством меньше указанного абсолютного значения

  • общее_сходство
    Целое число, необязательный параметр. Если для отдельной точки сходство не задано, это значение используется для каждой точки; диапазон 1~100, по умолчанию 100

  • слева, сверху, справа, снизу
    Целые числа, необязательные параметры, область поиска; по умолчанию всё изображение

Возвращаемое значение

  • координата_x, координата_y
    Целые числа, координаты первой точки совпавшего цвета; при неудачном поиске возвращается -1, -1

Описание

В режиме сходства находит положение первой полностью совпавшей структуры цвета нескольких точек в области
Использование режима цветового смещения см. в разделе поиск цвета нескольких точек со смещением (screen.find_color)

Пример

изображение = screen.image()

координата_x, координата_y = изображение:find_color({
{ 0, 0, 0xec1c23},
{ 12, -3, 0xffffff, 85},
{ 5, -18, 0x00adee},
{ -1, -10, 0xffc823},
{ 2, -34, 0xa78217},
{ 12, -55, 0xd0d2d2},
}, 90, 0, 0, 100, 100)
--
--[[
В области от 0, 0 в левом верхнем углу изображения до 100, 100 в правом нижнем найдите первую точку со сходством с 0xec1c23 более 90,
а цвет точки с относительными координатами (12, -3) должен иметь сходство с 0xffffff более 85,
цвет точки с относительными координатами (5, -18) — сходство с 0x00adee более 90,
и так далее (по тому же правилу) для всех точек.
--]]
--
-- Эквивалентный код:
--
координата_x, координата_y = изображение:find_color({
{ 509, 488, 0xec1c23},
{ 521, 485, 0xffffff, 85},
{ 514, 470, 0x00adee},
{ 508, 478, 0xffc823},
{ 511, 454, 0xa78217},
{ 521, 433, 0xd0d2d2},
}, 90, 0, 0, 100, 100)
--
--[[
В области от 0, 0 в левом верхнем углу изображения до 100, 100 в правом нижнем найдите первую точку со сходством с 0xec1c23 более 90,
а цвет точки с относительными координатами (521-509, 485-488) должен иметь сходство с 0xffffff более 85,
цвет точки с относительными координатами (514-509, 470-488) — сходство с 0x00adee более 90,
и так далее (по тому же правилу) для всех точек.
--]]