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

Поиск цвета по нескольким точкам со сходством (screen.find_color)

Объявление

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

Параметры

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

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

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

  • Алгоритм цветового сходства 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.init.

Пример

x, y = screen.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 = screen.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,
и так далее для остальных точек.
--]]
--
-- Без переносов строк и отступов это выглядит так:
x, y = screen.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)
--
x, y = screen.find_color({ -- Демонстрация обратного совпадения; при запуске на главном экране 5C будет получен результат
{ 516, 288, 0xffffff },
{ 519, 286, 0xffffff },
{ 521, 289, 0xffffff },
{ 516, 296, 0xffffff },
{ 522, 297, 0xffffff },
{ 520, 295, 0xffffff, -10 }, -- Эта точка совпадает только при сходстве с 0xffffff менее 10; то же относится к следующим
{ 515, 291, 0xffffff, -10 },
{ 518, 284, 0xffffff, -10 },
{ 523, 298, 0xffffff, -10 },
{ 514, 298, 0xffffff, -10 },
{ 514, 296, 0xffffff, -10 },
}, 90) -- Без параметров области поиск выполняется по всему экрану
--
results = screen.find_color({ -- Демонстрация вывода всех совпадений в области
{ 527, 278, 0xde1d26 },
{ 524, 285, 0x007aff },
{ 555, 292, 0xe4ddc9 },
{ 536, 314, 0xffde02 },
{ 502, 291, 0xffde02 },
{ 502, 283, 0xe4ddc9 },
find_all = true, -- Эта метка возвращает таблицу всех совпавших позиций в области в формате { {x1, y1}, {x2, y2}, ...}
}, 90) -- Без параметров области поиск выполняется по всему экрану