2015-10-05 4 views
0

Итак, я хочу захватить одно изображение, изображение s, которое всегда находится в том же регионе. Затем он исчезает и может появляться или не появляться в другом регионе.Sikuli: Как получить программу для захвата части экрана и сохранения как изображения

Я хотел бы, чтобы программа фиксировала первый раз, когда она появляется, и если она снова появляется в другой области, затем щелкните набор кнопок, иначе перейдите к другой функции.

Другое дело, что изображение меняется каждый раз, когда вызывается функция, но остается в том же месте.

Ниже мой код:

def playLoop(): 

s = capture(firstRegion) 
warnBox = exists("1443867801301.png") 
if not warnBox: 
    if exists("1443867813008.png"): 
     click(x) 
     playLoop() 
    else: 
     if secondRegion.exists(Pattern(s).similar(0.8)): 
      wait(3) 
      click(x) 
      playLoop() 
     else: 
      loopLoop() 
else: 
    doubleClick(y) 
    if secondRegion.exists(Pattern(s).similar(0.8)): 
      wait(3) 
      click(x) 
      playLoop() 
    else:    
     loopLoop() 

Я не получаю ошибки, однако это не похоже на работу. Есть идеи?

+0

Я думаю, что вы уже закончили программу, прежде чем данное изображение появится в другом реагенте. Посмотрите на 'while not exist'. – Tenzin

ответ

1
  1. Я думаю, вы должны изменить это:
    S = Screen.capture (firstRegion)
    для этого:
    S = захват (firstRegion)
  2. Вы можете получить координаты с находкой (изображение) :
    е = найти (s)
    х = GetX()
    у = GetY()
  3. Наконец, если вы хотите, т О получить NUMER раз, вы можете передать переменную в функцию:

    def playLoop(times,x,y): 
    
        s = capture(firstRegion) 
        t = find(s) 
        if times==0: 
         warnBox = exists("1443867801301.png") 
         if not warnBox: 
          if exists("1443867813008.png"): 
           click(x) 
           times+=1 
           playLoop(times,t.getX(),t.getY()) 
        if times != 0: 
         warnBox = exists("1443867801301.png") 
         if not warnBox: 
          if t.getX() != x or t.getY() != y: #different location 
           doSomething() 
          else: 
           otherFunction() #same location 
          times+=1 
    

    PD: Sry если мой английский не очень хорошо :)

+0

Однако я следовал за вашим первым предложением, мне не очень-то интересно получить координаты. Все, что я хотел бы, это функция для захвата первой области, а затем, когда это необходимо, посмотрите, существует ли захваченное изображение во второй области. Я обновил свой код и вопрос. Спасибо за вашу помощь хотя :) – codeav33

0

Чтобы увидеть, если области1 существует в регионе2 вы можете использовать if region2.exists(region1) then.

 Смежные вопросы

  • Нет связанных вопросов^_^