Вопрос

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

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

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

Это было полезно?

Решение

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

  • Нажмите на изображение
  • В разделе «Настройки узора» > «Предварительный просмотр сопоставления» перетащите полосу сходства на значение 1,0 (до конца вправо).
  • Нажмите ОК

Другие советы

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

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

Будет ли работать следующее?
Вы хотите, чтобы прогресс достиг 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():

Чтобы соответствовать точному изображению, я использую:

image1 = ("image1.png")
while not exists (Pattern(image1).exact()): 
       # Wait until that exact image appears. 
       wait(1) 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top