Code trouver image

Vous voulez de l'aide ? Postez ici :)
Post Reply
Ted62
Posts: 4
Joined: 14 Feb 2020, 17:37

Code trouver image

Post by Ted62 »

Bonjour à tous,

Cela fait maintenant 3 semaines que j'utilise Actiona et j'en suis très content. En tant que débutant en programmation, je trouve qu'Il est assez facile pour se mettre en route.
Cependant, lorsque on essaye de rentrer un peu plus en détail dans certaines fonctions, il faut pinayer... Mais avec plusieurs heures de recherche, on arrive toujours à trouver, enfin presque toujours...

Je souhaiterai utiliser une action code pour trouver une image dans 4 zones. L'écran sera diviser en 4 zones et dès qu'il y aura détection dans l'une de ces 4 zones, cela engendra une action.

Dans une première action, je vais devoir préparer la recherche d'image.

Code: Select all

repp= "C:/temp";

//zone 1 où chercher dans l'écran
x1=100;
y1=200;
largeur=500;
hauteur=500;
//=======

img_a_trouver=  repp + "/"  +   "img_a_trouver.png";

//========
var souris=new Mouse()
Petites questions:
1. Où doit-on prendre les positions (x1;y1)? Coin haut gauche ou bas gauche de la future zone 1?
2. Pour la largeur/hauteur, comment est-ce calculer? Est-ce comme cela? A partir du point (x1;y1) soit (100;200), on rajoute 500 soit (600;200) et (100;700) pour construire la zone.
3. Faut-il rajouter autre chose?

Seconde action, recherche d'image.

Code: Select all

 Execution.pause(200) ;  
var screenShot = Image.takeScreenshot();
var screenShot_partie= screenShot.copy(new Rect(x0,y0,largeur,hauteur));

var img_a_trouver_ = new Image(img_a_trouver);
                                                
 Search_IMG_ = screenShot_partie.findSubImages( img_a_trouver_,{
confidenceMinimum: 90,
downPyramidCount: 1,
searchExpansion: 15,
maximumMatches: 30
 });
Petite question, y-a-t-il une différence entre ces 2 img_a_trouver? Le 3eme "_" m'intrique...

Code: Select all

var img_a_trouver_ = new Image(img_a_trouver);
Troisième action, image trouvée.

Code: Select all

function n_img_trouvees()
{
    // au moins une image correspondante a été trouvée
    //  on va chercher celle avec la confiance maxi 
   confiance_maxi= 0;
   ctr = 0  ; // sera utilisé si 1 seule bonne image
   nb =  Search_IMG_.length  

  // 1) la "recherche image" a calculé les cordonnées à l’intérieur du rectangle (largeur X hauteur)
   //   Pour utiliser ces coordonnées (faire un clic par exemple),
   //   il faut les avoir par rapport à l’écran total
   //    Il faut dont rajouter x0 et y0
   // d'où :
    for(i=0;i<nb;i=i+1){
            Search_IMG_[i].position.x=Search_IMG_[i].position.x+x0; 
            Search_IMG_[i].position.y=Search_IMG_[i].position.y+y0; 
    } // fin for

   // 2) recherche confiance maxi
   for(i=0;i<nb;i=i+1){
     if (Search_IMG_[i].confidence>   confiance_maxi ){
        confiance_maxi=Search_IMG_[i].confidence; 
        ctr= i;   // sera uilisé si 1 seule image avec confiance maxi    
     } // fin if 
   } // fin for
 
    // 3) recherche le nombre d'images trouvées avec cette confiance maxi
  nb_maxi=0
  for(i=0;i<nb;i=i+1){
     if (Search_IMG_[i].confidence ==   confiance_maxi ){
        nb_maxi++;       
     } // fin if 
   } // fin for

   if (nb_maxi  ==  1 ){
      Mulot.move(Search_IMG_[ctr].position);
      Mulot.click();  
      Execution.pause(2000)

     Console.print("====")
     Console.print("Clic sur image")
     Console.print(Search_IMG_[ctr].position)
     Console.print("====")
   } 
  else {
           Console.print("====")
           Console.print("Il y a " + nb_maxi  + "  images " )
           Console.print("avec une confiance maxi de " + confiance_maxi )
           rc = liste_imgs_with_confiance_maxi()
           Console.print("====")
  } // fin if  :  (nb_maxi  ==  1 )
 } // fin FONCTION  n_img_trouvees()

function liste_imgs_with_confiance_maxi(){
 for(i=0;i<nb;i=i+1){
     if (Search_IMG_[i].confidence ==   confiance_maxi ){
        Console.print(Search_IMG_[i].position)  ;
     } // fin if 
   } // fin for
} // fin fonction
Petites questions:
1. D'où sortent les positions x et y?

Code: Select all

// 1) la "recherche image" a calculé les cordonnées à l’intérieur du rectangle (largeur X hauteur)
   //   Pour utiliser ces coordonnées (faire un clic par exemple),
   //   il faut les avoir par rapport à l’écran total
   //    Il faut dont rajouter x0 et y0
   // d'où :
    for(i=0;i<nb;i=i+1){
            Search_IMG_[i].position.x=Search_IMG_[i].position.x+x0; 
            Search_IMG_[i].position.y=Search_IMG_[i].position.y+y0; 
    } // fin for
2. Admettons, détection image en zone 2, je souhaiterai cliqué dans cette zone. Quelle sera la variable ou le code à utiliser ensuite pour le clic?

Beaucoup de questions désolé, mais je souhaiterai bien comprendre mon futur script.

Merci d'avance à celles et ceux qui pourront m'aider pour mon projet.
francois
Posts: 456
Joined: 18 Oct 2010, 10:33
Location: France

Re: Code trouver image

Post by francois »

1. Où doit-on prendre les positions (x1;y1)? Coin haut gauche ou bas gauche de la future zone 1?

Coin gauche/haut

2. Pour la largeur/hauteur, comment est-ce calculer? Est-ce comme cela? A partir du point (x1;y1) soit (100;200), on rajoute 500 soit (600;200) et (100;700) pour construire la zone.

Exactement

3. Faut-il rajouter autre chose?

non

var img_a_trouver_ = new Image(img_a_trouver);
Petite question, y-a-t-il une différence entre ces 2 img_a_trouver? Le 3eme "_" m'intrique...

ici 'img_a_trouver' indique le chemin complet du fichier image, exemple c:/temp/toto/imagge.jpg
Alors que 'img_a_trouver_' designe un objet image.
il s'agit bien d'un objet avec des propriétés , exemple zz = img_a_trouver_.width() donne la largeur de l'image.


D'où sortent les positions x et y?

Action image :
Search_IMG_ = screenShot_partie.findSubImages( img_a_trouver_, .....

Soit aucune image alors Search_IMG_ est vide

Soit image(s) trouvée(s)

Alors on obtient des infos sur la position de la i eme image trouvée :
Search_IMG_[ i ].position.x donne le x
Search_IMG_[ i ].position.y donne le y





2. Admettons, détection image en zone 2, je souhaiterai cliqué dans cette zone. Quelle sera la variable ou le code à utiliser ensuite pour le clic?


X_clic = Search_IMG_[ i ].position.x
Y_clic = Search_IMG_ [ i ].position.y
var pt_clic = new Point( X_clic, Y_clic);
souris.move(pt_clic);
souris.click();
Ted62
Posts: 4
Joined: 14 Feb 2020, 17:37

Re: Code trouver image

Post by Ted62 »

Merci pour les renseignements François. Je vais pouvoir mettre en pratique et avancer sur mon projet.
Post Reply