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éfautAlgorithme 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é parscreen.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