Saltar al contenido principal

Buscar colores en varios puntos mediante el modo de similitud (screen.find_color)

Declaración

coordenada_x, coordenada_y = screen.find_color({
[find_all = buscar_todos,]
[max_results = máximo_de_resultados,]
[max_miss = máximo_de_fallos,]
[csim_algorithm = algoritmo_de_similitud_de_color,]
{coordenada_x_inicial, coordenada_y_inicial, color_inicial[, similitud_inicial]},
{coordenada_x_de_desplazamiento*, coordenada_y_de_desplazamiento*, color_de_desplazamiento*[, similitud_de_desplazamiento*]},
{coordenada_x_de_desplazamiento*, coordenada_y_de_desplazamiento*, color_de_desplazamiento*[, similitud_de_desplazamiento*]},
...
} [, similitud_global, izquierda, arriba, derecha, abajo ])

Parámetros

  • buscar todos
    Tipo booleano, parámetro opcional; si esta etiqueta se establece en true, devuelve una tabla con todas las posiciones coincidentes dentro del área, con el formato {{x1, y1}, {x2, y2}, ...}; el valor predeterminado es false

  • máximo de resultados
    Tipo entero, parámetro opcional; cuando la etiqueta find_all (buscar todos) se establece en true, indica el número máximo de resultados devueltos. Puede establecerse como máximo en 1000; el valor predeterminado es 100

  • máximo de fallos
    Tipo entero, parámetro opcional; cantidad máxima de puntos que pueden no coincidir. El valor predeterminado es 0, por lo que deben coincidir todos los puntos

  • algoritmo de similitud de color 20250302
    Tipo entero, parámetro opcional; algoritmo de similitud de color. El valor predeterminado es 0

    Algoritmos de similitud de color
    0 es el algoritmo predeterminado de XXT: gradiente pronunciado y la similitud disminuye rápidamente con la diferencia
    1 es el algoritmo de Manhattan: gradiente suave
    2 es el algoritmo euclídeo: gradiente suave
  • coordenada x inicial, coordenada y inicial
    Tipo entero, coordenadas iniciales. No limitan la búsqueda de colores a un único punto; solo proporcionan una coordenada relativa para las posiciones de desplazamiento. Si no se necesitan desplazamientos, se puede usar 0, 0

  • color inicial
    Tipo entero, color del punto que se buscará

  • similitud inicial
    Tipo entero, parámetro opcional; similitud del color del punto que se buscará, en el intervalo 1~100; el valor predeterminado es 100

  • coordenada x de desplazamiento*, coordenada y de desplazamiento*
    Tipo entero, coordenadas de una posición de desplazamiento

  • color de desplazamiento*
    Tipo entero, color que debe coincidir en la posición de desplazamiento

  • similitud de desplazamiento*
    Tipo entero, parámetro opcional; similitud del color de la posición de desplazamiento, en el intervalo -100~100; el valor predeterminado es 100. Una similitud negativa indica que debe coincidir una similitud inferior a su valor absoluto

  • similitud global
    Tipo entero, parámetro opcional; si no se establece una similitud para un punto individual, todos los puntos usarán esta similitud, en el intervalo 1~100; el valor predeterminado es 100

  • izquierda, arriba, derecha, abajo
    Tipo entero, parámetro opcional; área de búsqueda. El valor predeterminado es pantalla completa

Valores devueltos

  • coordenada x, coordenada y
    Tipo entero, coordenadas del primer color del patrón coincidente; si la búsqueda falla, devuelve -1, -1

Descripción

Busca mediante el modo de similitud y obtiene la posición del primer patrón de colores multipunto completamente coincidente dentro del área
Los parámetros de coordenadas y los valores devueltos de esta función están condicionados por el sistema de coordenadas inicializado mediante screen.init

Ejemplo

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)
--
--[[
Encuentra, dentro del área cuya esquina superior izquierda es 0, 0 y la inferior derecha es 100, 100, el primer punto cuya similitud con 0xec1c23 sea superior a 90,
cuyo punto relativo (12, -3) tenga un color con una similitud superior a 85 con 0xffffff,
cuyo punto relativo (5, -18) tenga un color con una similitud superior a 90 con 0x00adee,
y así sucesivamente, hasta que todos los puntos coincidan
--]]
--
-- 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)
--
--[[
Encuentra, dentro del área cuya esquina superior izquierda es 0, 0 y la inferior derecha es 100, 100, el primer punto cuya similitud con 0xec1c23 sea superior a 90,
cuyo punto relativo (521-509, 485-488) tenga un color con una similitud superior a 85 con 0xffffff,
cuyo punto relativo (514-509, 470-488) tenga un color con una similitud superior a 90 con 0x00adee,
y así sucesivamente, hasta que todos los puntos coincidan
--]]
--
-- Sin saltos de línea ni sangría, el efecto es este:
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({ -- Demostración de coincidencia inversa; se obtienen resultados al ejecutarla en la pantalla principal de un 5C
{ 516, 288, 0xffffff },
{ 519, 286, 0xffffff },
{ 521, 289, 0xffffff },
{ 516, 296, 0xffffff },
{ 522, 297, 0xffffff },
{ 520, 295, 0xffffff, -10 }, -- Este punto solo coincide si su color tiene una similitud inferior a 10 con 0xffffff; lo mismo se aplica a los siguientes
{ 515, 291, 0xffffff, -10 },
{ 518, 284, 0xffffff, -10 },
{ 523, 298, 0xffffff, -10 },
{ 514, 298, 0xffffff, -10 },
{ 514, 296, 0xffffff, -10 },
}, 90) -- Si no se especifican los parámetros de área, busca en toda la pantalla
--
results = screen.find_color({ -- Demostración de coincidencia en un área con todos los resultados
{ 527, 278, 0xde1d26 },
{ 524, 285, 0x007aff },
{ 555, 292, 0xe4ddc9 },
{ 536, 314, 0xffde02 },
{ 502, 291, 0xffde02 },
{ 502, 283, 0xe4ddc9 },
find_all = true, -- Con esta etiqueta se devuelve una tabla con todas las posiciones coincidentes del área, con el formato {{x1, y1}, {x2, y2}, ...}
}, 90) -- Si no se especifican los parámetros de área, busca en toda la pantalla