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()
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
});
Code: Select all
var img_a_trouver_ = new Image(img_a_trouver);
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
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
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.