Pular para o conteúdo principal

Encontrar cores no modo de similaridade em vários pontos (screen.find_color)

Declaração

coordenada_x, coordenada_y = screen.find_color({
[find_all = pesquisar_múltiplos_resultados,]
[max_results = número_máximo_de_resultados,]
[max_miss = número_máximo_de_pontos_sem_correspondência,]
[csim_algorithm = algoritmo_de_similaridade_de_cor,]
{coordenada_x_inicial, coordenada_y_inicial, cor_inicial[, similaridade_inicial]},
{coordenada_x_de_deslocamento*, coordenada_y_de_deslocamento*, cor_de_deslocamento*[, similaridade_de_deslocamento*]},
{coordenada_x_de_deslocamento*, coordenada_y_de_deslocamento*, cor_de_deslocamento*[, similaridade_de_deslocamento*]},
...
} [, similaridade_global, esquerda, topo, direita, baixo ])

Parâmetros

  • pesquisar múltiplos resultados
    Booleano opcional; quando definido como true, retorna uma tabela com todas as posições correspondentes na área, no formato {{x1, y1}, {x2, y2}, ...}. O padrão é false.

  • número máximo de resultados
    Inteiro opcional; quando a etiqueta find_all (pesquisar múltiplos resultados) é true, indica a quantidade máxima de resultados. O máximo é 1000; o padrão é 100.

  • número máximo de pontos sem correspondência
    Inteiro opcional; quantidade máxima de pontos sem correspondência permitida. O padrão é 0, ou seja, todos os pontos devem corresponder.

  • algoritmo de similaridade de cor (desde a versão 20250302)
    Inteiro opcional que representa o algoritmo de similaridade de cor; o padrão é 0.

    Algoritmo de similaridade de cor
    0 é o algoritmo padrão do XXT; o gradiente é acentuado e a diferença reduz rapidamente a similaridade
    1 é o algoritmo de Manhattan; o gradiente é suave
    2 é o algoritmo euclidiano; o gradiente é suave
  • coordenada_x_inicial, coordenada_y_inicial
    Inteiros que representam as coordenadas iniciais. Elas não restringem a busca a um único ponto; servem apenas como coordenadas relativas dos pontos de deslocamento. Se não for necessário deslocamento, use 0, 0.

  • cor inicial
    Inteiro que representa a cor a ser pesquisada nesse ponto.

  • similaridade inicial
    Inteiro opcional que representa a similaridade da cor pesquisada nesse ponto, no intervalo de 1 a 100; o padrão é 100.

  • coordenada_x_de_deslocamento*, coordenada_y_de_deslocamento*
    Inteiros que representam as coordenadas de uma posição deslocada.

  • cor_de_deslocamento*
    Inteiro que representa a cor a ser correspondida na posição deslocada.

  • similaridade_de_deslocamento*
    Inteiro opcional que representa a similaridade da cor na posição deslocada, no intervalo de -100 a 100; o padrão é 100. Uma similaridade negativa significa corresponder a uma similaridade menor que seu valor absoluto.

  • similaridade global
    Inteiro opcional; se nenhum ponto tiver uma similaridade própria, todos usarão este valor, no intervalo de 1 a 100; o padrão é 100.

  • esquerda, topo, direita, baixo
    Inteiros opcionais que representam a área de busca; o padrão é a tela inteira.

Valores retornados

  • coordenada_x, coordenada_y
    Inteiros; retornam as coordenadas da primeira cor correspondente. Em caso de falha, retornam -1, -1.

Observações

Procura no modo de similaridade a posição da primeira estrutura de cores em vários pontos que corresponda completamente na região.
Os parâmetros de coordenadas e os valores retornados por esta função são afetados pelo sistema inicializado por screen.init.

Exemplo

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)
--
--[[
na região de (0, 0) no canto superior esquerdo a (100, 100) no canto inferior direito, encontra o primeiro ponto com similaridade superior a 90 com 0xec1c23
e cuja posição relativa (12, -3) tenha uma cor com similaridade superior a 85 com 0xffffff
e cuja posição relativa (5, -18) tenha uma cor com similaridade superior a 90 com 0x00adee
e que também corresponda aos demais pontos da mesma maneira
--]]
--
-- Código equivalente:
--
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)
--
--[[
na região de (0, 0) no canto superior esquerdo a (100, 100) no canto inferior direito, encontra o primeiro ponto com similaridade superior a 90 com 0xec1c23
e cuja posição relativa (521-509, 485-488) tenha uma cor com similaridade superior a 85 com 0xffffff
e cuja posição relativa (514-509, 470-488) tenha uma cor com similaridade superior a 90 com 0x00adee
e que também corresponda aos demais pontos da mesma maneira
--]]
--
-- Sem quebras de linha ou indentação, o efeito é:
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({ -- demonstração de correspondência inversa; produz resultado quando executado na tela principal do 5C
{ 516, 288, 0xffffff },
{ 519, 286, 0xffffff },
{ 521, 289, 0xffffff },
{ 516, 296, 0xffffff },
{ 522, 297, 0xffffff },
{ 520, 295, 0xffffff, -10 }, -- só corresponde quando a similaridade desta cor com 0xffffff é menor que 10; idem abaixo
{ 515, 291, 0xffffff, -10 },
{ 518, 284, 0xffffff, -10 },
{ 523, 298, 0xffffff, -10 },
{ 514, 298, 0xffffff, -10 },
{ 514, 296, 0xffffff, -10 },
}, 90) -- sem parâmetros de área, procura na tela inteira
--
results = screen.find_color({ -- demonstração de saída de todas as correspondências na área
{ 527, 278, 0xde1d26 },
{ 524, 285, 0x007aff },
{ 555, 292, 0xe4ddc9 },
{ 536, 314, 0xffde02 },
{ 502, 291, 0xffde02 },
{ 502, 283, 0xe4ddc9 },
find_all = true, -- esta etiqueta retorna uma tabela com as posições de todas as correspondências na área, no formato { {x1, y1}, {x2, y2}, ...}
}, 90) -- sem parâmetros de área, procura na tela inteira