Aller au contenu principal

Rechercher une couleur dans une image (:find_color)

Déclaration

x, y = image:find_color({
[find_all = find_all,]
[max_results = max_results,]
[max_miss = max_miss,]
[find_order = find_order,]
[csim_algorithm = color_similarity_algorithm,]
{start_x, start_y, start_color[, start_similarity]},
{dx*, dy*, color*[, similarity*]},
{dx*, dy*, color*[, similarity*]},
...
} [, global_similarity, left, top, right, bottom ])

Paramètres

  • find_all Booléen facultatif : si true, retourne toutes les positions correspondantes dans la zone sous la forme {{x1, y1}, {x2, y2}, ...}. Par défaut false

  • max_results Entier facultatif : lorsque find_all vaut true, nombre maximal de résultats, au plus 1000, par défaut 100

  • max_miss Entier facultatif : nombre maximal de points ne correspondant pas, par défaut 0, donc tous les points doivent correspondre

  • find_order Entier facultatif : ordre de recherche, de 1 à 8, par défaut 1

    Valeurs de l’ordre de recherche
    1 haut-bas-gauche-droite
    2 gauche-droite-haut-bas
    3 droite-gauche-haut-bas
    4 haut-bas-droite-gauche
    5 bas-haut-droite-gauche
    6 droite-gauche-bas-haut
    7 gauche-droite-bas-haut
    8 bas-haut-gauche-droite

    La fonction d’écran screen.find_color ne possède pas ce champ. Démonstration de l’ordre de recherche

  • color_similarity_algorithm (à partir de 20250302) Entier facultatif : algorithme de similarité des couleurs, par défaut 0

    Algorithmes de similarité des couleurs
    0 algorithme par défaut de XXT, gradient abrupt, la similarité diminue rapidement avec la différence
    1 algorithme de Manhattan, gradient régulier
    2 algorithme euclidien, gradient régulier
  • start_x, start_y Entiers : coordonnées de départ servant de référence aux décalages, et non de limite fixe de recherche ; utilisez 0, 0 si aucun décalage n’est nécessaire

  • start_color Entier : couleur du point de départ à rechercher

  • start_similarity Entier facultatif : similarité de la couleur du point de départ, de 1 à 100, par défaut 100

  • dx*, dy* Entiers : coordonnées d’un décalage

  • color* Entier : couleur attendue au point décalé

  • similarity* Entier facultatif : similarité au point décalé, de -100 à 100, par défaut 100 ; une similarité négative signifie qu’il faut correspondre à une similarité inférieure à sa valeur absolue

  • global_similarity Entier facultatif : similarité utilisée lorsqu’aucune similarité individuelle n’est définie, de 1 à 100, par défaut 100

  • left, top, right, bottom Entiers facultatifs : zone de recherche, par défaut l’image entière

Valeur de retour

  • x, y Entiers : coordonnées du premier point correspondant ; retourne -1, -1 en cas d’échec

Description

Utilise le mode de similarité pour rechercher la première position correspondant à une structure de couleurs multipoints dans la zone Pour le mode de décalage, consultez screen.find_color

Exemple

image = screen.image()

x, y = image: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)
--
--[[
Dans la zone allant de 0, 0 en haut à gauche de l’image à 100, 100 en bas à droite,
rechercher le premier point dont la similarité avec 0xec1c23 dépasse 90,
dont les coordonnées relatives (12, -3) ont une couleur dont la similarité avec 0xffffff dépasse 85,
dont les coordonnées relatives (5, -18) ont une couleur dont la similarité avec 0x00adee dépasse 90,
et dont tous les autres points correspondent de la même manière.
--]]
--
-- Code équivalent :
--
x, y = image: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)
--
--[[
Dans la zone allant de 0, 0 en haut à gauche de l’image à 100, 100 en bas à droite,
rechercher le premier point dont la similarité avec 0xec1c23 dépasse 90,
dont les coordonnées relatives (521-509, 485-488) ont une couleur dont la similarité avec 0xffffff dépasse 85,
dont les coordonnées relatives (514-509, 470-488) ont une couleur dont la similarité avec 0x00adee dépasse 90,
et dont tous les autres points correspondent de la même manière.
--]]