Изменить чувствительность Сикули? - PullRequest
5 голосов
/ 09 марта 2010

Я уже некоторое время пользуюсь sikuli, однако у меня есть проблема с ним ... Это недостаточно чувствительно. Я пытаюсь сопоставить что-то на экране, что -EXACT-, и на экране есть несколько других элементов, которые выглядят достаточно похожими, так что sikuli принимает их за то, что я на самом деле ищу, поэтому мне нужно сделать это Ищите ТОЛЬКО этот товар без каких-либо отклонений.

Как я могу это сделать?

Да, и, чтобы объяснить мою проблему немного дальше, я пишу цикл для игры, когда индикатор выполнения достигает 100% - он должен позволить циклу завершиться (и начать заново), однако индикатор выполнения это просто полоса - поэтому, когда sikuli ищет его на экране, он находит частично завершенную полосу (поскольку, очевидно, она соответствует разной длине / ширине / размеру изображения, которое он ищет) и запускает.

Ответы [ 4 ]

6 голосов
/ 07 октября 2010

Вы можете сделать следующее в IDE Sikuli:

  • Нажмите на картинку
  • В меню «Параметры шаблона»> «Просмотр соответствия» перетащите панель «Сходство» на значение 1,0 (полностью вправо)
  • Нажмите ОК
3 голосов
/ 07 октября 2010

Если вы используете Sikuli IDE, нажмите на миниатюру изображения, для которой вы хотите изменить чувствительность. Вам будет представлен скриншот вашего рабочего стола с вхождениями паттерна (вашего изображения). Внизу есть слайдер с изменением чувствительности. Изменяя его, вы заметите, что выделенные вхождения шаблона увеличиваются или уменьшаются соответственно.
Этот метод предполагает, что ваша игра отображается на экране (т.е. в оконном режиме, а не в полноэкранном режиме), но даже если вы этого не сделаете, вы все равно можете настроить чувствительность, просто вы не увидите «живые» результаты поиска.

Если вы вызываете sikuli из кода Java, вы должны использовать Pattern(image.png).similar(y.xx)
где аргумент simmilar находится между 0,00 и 1,00.
Я не использовал второй метод, поэтому вам, возможно, придется поэкспериментировать с ним.

0 голосов
/ 14 августа 2015

Для точного соответствия изображения я использую:

image1 = ("image1.png")
while not exists (Pattern(image1).exact()): 
       # Wait until that exact image appears. 
       wait(1) 
0 голосов
/ 04 апреля 2011

Будет ли работать следующее?
Вы ищете прогресс, чтобы достичь 100%, а затем повторить цикл?

  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():
...