2010-03-09 5 views
5

Ich habe Sikuli für eine Weile verwendet, aber ich habe ein Problem damit ... Es ist nicht empfindlich genug. Ich versuche, etwas auf dem Bildschirm, der -EXACT-, zu vergleichen, und es gibt ein paar andere Elemente auf dem Bildschirm, die ähnlich genug aussehen, dass Sikuli sie mit dem verwechselt, wonach ich eigentlich suche, also muss ich es machen Suchen Sie nach NUR diesem Artikel ohne Abweichungen.Change Sikulis Empfindlichkeit?

Wie kann ich das tun?

Oh und um mein Problem ein wenig weiter zu erklären, ich schreibe eine Schleife für ein Spiel, sobald ein Fortschrittsbalken 100% erreicht hat - es muss die Schleife zu beenden (Und von vorne beginnen), aber der Fortschritt bar ist nur ein einfacher Balken - wenn also sikuli auf dem Bildschirm nach ihm sucht, findet er den teilweise vollständigen Balken (Da er offensichtlich nach verschiedenen Längen/Breiten/Größen des gesuchten Bildes sucht) und löst aus.

Antwort

6

Sie können die folgenden in der Sikuli IDE tun:

  • Klicken Sie auf das Bild
  • In Pattern Einstellungen> Passende Vorschau, ziehen Sie die Ähnlichkeit bar bis 1,0 (ganz nach rechts)
  • Klicken Sie auf OK
3

Wenn Sie Sikuli IDE verwenden, klicken Sie auf Miniaturbild, für das Sie die Empfindlichkeit ändern möchten. Sie werden Screenshot Ihres Desktops mit und Vorkommen von Muster (Ihr Bild) vorgestellt. Darunter befindet sich ein Schieberegler, der die Empfindlichkeit ändert. Während Sie es ändern, werden Sie bemerken, dass hervorgehobene Vorkommen des Musters entsprechend zunehmen oder abnehmen.
Bei dieser Methode wird davon ausgegangen, dass Sie Ihr Spiel auf dem Bildschirm haben (Fenstermodus, nicht Vollbildmodus), aber selbst wenn Sie die Empfindlichkeit noch nicht einstellen können, werden die Ergebnisse der Suche nicht angezeigt.

Wenn Sie Sikuli von Java-Code aufrufen, müssen Sie Pattern(image.png).similar(y.xx)
verwenden, wo das Argument von simmilar etwas zwischen 0,00 und 1,00 ist.
Ich habe keine zweite Methode verwendet, so dass Sie möglicherweise damit experimentieren müssen.

0

Wird die folgende Arbeit?
Sie suchen nach dem Fortschritt, um 100% zu erreichen und dann erneut zu loopen?

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

ein genaues Bild passen verwende ich:

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