2010-03-09 6 views
5

J'ai utilisé sikuli pendant un certain temps, mais j'ai un problème avec ça ... Ce n'est pas assez sensible. J'essaye de faire correspondre quelque chose sur l'écran qui est -EXACT-, et il y a quelques autres éléments sur l'écran qui me paraissent assez similaires pour que sikuli les prenne pour ce que je cherche réellement, donc je dois le faire Recherchez SEULEMENT cet article sans aucune variation.Modifier la sensibilité de Sikuli?

Comment est-ce que je peux faire ceci? Oh et pour expliquer mon problème un peu plus loin, j'écris une boucle pour un jeu, une fois qu'une barre de progression a atteint 100% - elle doit permettre à la boucle de finir (et recommencer), mais la progression la barre est juste une barre plate - donc quand sikuli la recherche sur l'écran, elle trouve la barre partiellement complète (puisque apparemment elle correspond à différentes longueurs/largeurs/tailles de l'image qu'elle recherche), et se déclenche.

Répondre

6

Vous pouvez faire ce qui suit dans l'Sikuli IDE:

  • Cliquez sur l'image
  • Dans Paramètres Pattern> assortis aperçu, faites glisser la barre de similarité à 1,0 (tout le chemin à droite)
  • Cliquez sur OK
3

Si vous utilisez Sikuli IDE, cliquez sur l'image miniature pour laquelle vous souhaitez modifier la sensibilité. On vous présentera une capture d'écran de votre bureau avec des occurrences de motif (votre image). Ci-dessous, il y a un curseur qui change de sensibilité. En le modifiant, vous remarquerez que les occurrences surlignées du motif augmentent ou diminuent en conséquence.
Cette méthode suppose que vous avez votre jeu à l'écran (donc en mode fenêtré, pas en plein écran), mais même si vous ne pouvez pas encore ajuster la sensibilité, vous ne verrez pas les résultats de la recherche en direct.

Si vous appelez Sikuli à partir du code Java, vous devez utiliser Pattern(image.png).similar(y.xx)
où l'argument de simmilar est quelque chose entre 0,00 et 1,00.
Je n'ai pas utilisé la seconde méthode, donc vous devrez peut-être l'expérimenter.

0

Est-ce que cela fonctionnera?
Vous êtes à la recherche de progrès pour atteindre 100% puis bouclez à nouveau?

f = open("C:\\test.htm",'W') 
    f.write('<font color="#347C2C">lOOPtEST</font><br />') 
    f.write('loop iteration' + (str (count)) + '<br />') 
    count = count + 1 
    f.close() 
COUNT =10 
POPUP("LOOPTEST") 

//image compare from progress bar 

import sikuli.Sikuli * 

WebPath =('Z:\\ZZZautomation\\Web\\') 

BuildPath = ("Z:\BUILDS\Daily_BUILDS\QA_MainBranch_Install\*.install") 
BuildNumber = glob.glob("Z:\BUILDS\Daily_BUILDS\QA_MainBranch_Install\*.install") 
for filename in BuildNumber: 
    SmokeTestInfo = "SmokeTest_Build " + filename[45:50] + " Iteration 44"+".htm" 
global Number 
Number = filename[45:50] 

global SmokeTest 
SmokeTest = SmokeTestInfo 

global count 
count = 0 

defMidProgress(): 
    while not exists ("//path to image of progress bar @ 50%//",FOREVER) 
    //or 
    wait("//path to image of progress bar @ 50%//", FOREVER) 
    //using forevEr means sikuli will checK FOR 50% PROGRESS FOREVER 
    //the bottom execures once the condition above is met 
    open(WebPath + SmokeTest,'w') 
    f.write('<font color="#0000FF">Progress is at 50%</font><br />') 
    f.close() 
    // writes entry to html log fie 

defFinalProgress(): 

    while not exists ("//path to image of progress bar @ 100%//",FOREVER) 
    //or 
    wait("//path to image of progress bar @ 100%//", FOREVER) 
    //using forever means sikuli will check FOR 100% PROGRESS FOREVER 
    //the bottom execures once the condition above is met 
    open(WebPath + SmokeTest,'a') 
    f.write('<font color="#0000FF">Progress is at 100%</font><br />') 
    f.close() 
    // writes entry to html log fie 


def Loop 
count =0 
def midProgress(): 

def FinalProgress(): 
0

Pour correspondre à une image exacte que j'utilise:

image1 = ("image1.png") 
while not exists (Pattern(image1).exact()): 
     # Wait until that exact image appears. 
     wait(1) 
Questions connexes