Bonjour,
La recherche d'image est un point fort d'Actiona et c'est sans doute l'action la plus complexe.
Dans la rubrique
Tutos & exemples, message
Recherche image dans image,
j'ai fait il y a 3 ans un topo sur ce que j'ai compris de cette action ( plus via la pratique que via la théorie).
Même si JMGR a encore fait progresser cette action, Il y a des réponses à tes questions.
Juste quelques précisions ( Y compris sur ce que je n'ai pas compris) :
Quelqu'un peut-être m'expliquer en quoi consistent les 3 méthodes ?
"Correlation Coefficient" / "Cross Correlation" / "Squared Difference"
Via l'analyse de la valeur de la variable confiance, en sortie,
Correlation Coefficient correspond au besoin standard, recherche d'une image ressemblant le plus possible à l'image proposée.
La confiance diminue rapidement dès qu'il y a des différences.
Cross Correlation , la confiance ne diminue pas rapidement même s'il y a des différences.
Je verrais bien un type d'utilisation : recherche d'une photo abimée.
Squared Difference
Via les tests que j'ai fait, je vois pas trop.
Je ne sais pas non plus comment fonctionne "l'expansion de la recherche" ?
Exemple si expansion de la recherche = 20.
Si actiona trouve une image, il ne cherchera pas s'il y a une autre image à moins de 20 pixels de celle qui vient d'etre trouvée.
Quand au sous-échantillonnage, 1 est le minimum, si on augmente la recherche est plus rapide, c'est ça ? Mais la recherche est alors moins précise ?
J'ai pas vraiment compris cette notion, je mets toujours 1.
Et surtout ma question : comment faire pour chercher dans une zone précise de l'écran/ d'une fenêtre ? (pour accélérer la recherche, réduire les erreurs etc
Via le code :
Code: Select all
var screenShot = Image.takeScreenshot();
IMG_= screenShot.copy(new Rect(505,415,50,50));
var IMG_a_trouver = new Image(p51_exercice_clos_le);
Search_IMG_ =IMG_.findSubImages(IMG_a_trouver,
{
confidenceMinimum: 80,
downPyramidCount: 1,
searchExpansion: 15,
maximumMatches: 10
})
if(searchResult)
{
for(var j =0 ;j < searchResult.length; ++j)
{
actuelle_img= searchResult[j].position
actuelle_confiance=searchResult[j].confidence;
//=> prendre ou pas suivant la confiance de l'image
} // fin for
} // fin if
=====
=====
Il y a 2 paramètres importants
Confiance minimale et nombre maximum d'images à chercher
( confidenceMinimum et maximumMatches dans le code)
Confiance minimale :
Si trop petit, il détecte même ce qu il ne faudrait pas détecter
Si trop grand, il ne détecte pas ce qu'il devrait détecter.
Faut juste tester avant.
Nombre maximum d'images à chercher
Si on met 1, actiona s'arrête dès qu'il a trouvé une image
... Y compris s'il y en d'autres.
Cordialement
Francois