Aller au contenu principal

Recherche de couleur par similarité sur plusieurs points (screen.find_color)

Déclaration

coordonnée horizontale, coordonnée verticale = screen.find_color({
[find_all = rechercher plusieurs résultats,]
[max_results = nombre maximal de résultats,]
[max_miss = nombre maximal de points manqués,]
[csim_algorithm = algorithme de similarité des couleurs,]
{coordonnée horizontale du point de départ, coordonnée verticale du point de départ, couleur du point de départ[, similarité du point de départ]},
{coordonnée horizontale du point décalé\*, coordonnée verticale du point décalé\*, couleur du point décalé\*[, similarité du point décalé\*]},
{coordonnée horizontale du point décalé\*, coordonnée verticale du point décalé\*, couleur du point décalé\*[, similarité du point décalé\*]},
...
} [, similarité globale, gauche, haut, droite, bas ])

Paramètres

  • rechercher plusieurs résultats
    Booléen, paramètre facultatif ; lorsque ce champ vaut true, renvoie une table contenant toutes les positions correspondantes dans la zone, sous la forme {{x1, y1}, {x2, y2}, ...} ; false par défaut

  • nombre maximal de résultats
    Entier, paramètre facultatif ; lorsque find_all (rechercher plusieurs résultats) vaut true, indique le nombre maximal de résultats, au plus 1000, 100 par défaut

  • nombre maximal de points manqués
    Entier, paramètre facultatif, nombre maximal de points qui peuvent ne pas correspondre ; 0 par défaut, ce qui exige la correspondance de tous les points

  • algorithme de similarité des couleurs 20250302
    Entier, paramètre facultatif, algorithme de similarité des couleurs, 0 par défaut

    Algorithme de similarité des couleurs
    0 pour l’algorithme par défaut de XXT, gradient abrupt, la différence fait rapidement baisser la similarité
    1 pour l’algorithme de Manhattan, gradient régulier
    2 pour l’algorithme euclidien, gradient régulier
  • coordonnée horizontale du point de départ, coordonnée verticale du point de départ
    Entiers, coordonnées de départ ; elles ne limitent pas la recherche de couleur à ce point, mais donnent seulement une coordonnée relative aux positions décalées. Si aucun décalage n’est nécessaire, indiquez 0, 0

  • couleur du point de départ
    Entier, couleur du point à rechercher

  • similarité du point de départ
    Entier, paramètre facultatif, similarité de la couleur du point à rechercher, de 1 à 100, 100 par défaut

  • coordonnée horizontale du point décalé*, coordonnée verticale du point décalé*
    Entiers, coordonnées d’une position décalée

  • couleur du point décalé*
    Entier, couleur à comparer à la position décalée

  • similarité du point décalé*
    Entier, paramètre facultatif, similarité de la couleur à la position décalée, de -100 à 100, 100 par défaut ; une similarité négative signifie qu’une similarité inférieure à sa valeur absolue est recherchée

  • similarité globale
    Entier, paramètre facultatif ; si aucun point n’a de similarité individuelle, chaque point utilise cette similarité, de 1 à 100, 100 par défaut

  • gauche, haut, droite, bas
    Entiers, paramètres facultatifs, zone de recherche, plein écran par défaut

Valeur de retour

  • coordonnée horizontale, coordonnée verticale
    Entiers, coordonnées du premier point correspondant ; renvoie -1, -1 si la recherche échoue

Description

Recherche avec le mode de similarité et obtient la position de la première structure de couleurs multipoint entièrement correspondante dans la zone
Les paramètres et valeurs de retour des coordonnées de cette fonction dépendent du système de coordonnées initialisé par screen.init

Exemple

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)
--
--[[
Dans la zone allant du coin supérieur gauche 0, 0 au coin inférieur droit 100, 100, trouve le premier point dont la similarité avec 0xec1c23 est supérieure à 90
et dont la couleur à la position relative (12, -3) a une similarité supérieure à 85 avec 0xffffff
et dont la couleur à la position relative (5, -18) a une similarité supérieure à 90 avec 0x00adee
et ainsi de suite pour les autres points, jusqu’à obtenir un point correspondant
--]]
--
-- Voici le code équivalent :
--
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)
--
--[[
Dans la zone allant du coin supérieur gauche 0, 0 au coin inférieur droit 100, 100, trouve le premier point dont la similarité avec 0xec1c23 est supérieure à 90
et dont la couleur à la position relative (521-509, 485-488) a une similarité supérieure à 85 avec 0xffffff
et dont la couleur à la position relative (514-509, 470-488) a une similarité supérieure à 90 avec 0x00adee
et ainsi de suite pour les autres points, jusqu’à obtenir un point correspondant
--]]
--
-- Sans retour à la ligne ni indentation, cela donne :
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({ -- Démonstration de la correspondance inversée, exécutable sur l’écran d’accueil d’un 5C pour obtenir un résultat
{ 516, 288, 0xffffff },
{ 519, 286, 0xffffff },
{ 521, 289, 0xffffff },
{ 516, 296, 0xffffff },
{ 522, 297, 0xffffff },
{ 520, 295, 0xffffff, -10 }, -- Ce point ne correspond que si la similarité de la couleur avec 0xffffff est inférieure à 10, idem ci-dessous
{ 515, 291, 0xffffff, -10 },
{ 518, 284, 0xffffff, -10 },
{ 523, 298, 0xffffff, -10 },
{ 514, 298, 0xffffff, -10 },
{ 514, 296, 0xffffff, -10 },
}, 90) -- Sans paramètres de zone, recherche sur tout l’écran
--
results = screen.find_color({ -- Démonstration du renvoi de toutes les correspondances dans la zone
{ 527, 278, 0xde1d26 },
{ 524, 285, 0x007aff },
{ 555, 292, 0xe4ddc9 },
{ 536, 314, 0xffde02 },
{ 502, 291, 0xffde02 },
{ 502, 283, 0xe4ddc9 },
find_all = true, -- Ce champ renvoie toutes les positions correspondantes dans la zone, sous forme `{{x1, y1}, {x2, y2}, ...}`
}, 90) -- Sans paramètres de zone, recherche sur tout l’écran