2015-10-05 19 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

我认为你的程序已经完成之前,给定的图像有机会出现在另一个reagion。 看看'while not exist'。 – Tenzin

回答

1
  1. 我想你应该改变这样的:
    S = Screen.capture(firstRegion)
    此:
    S =捕获(firstRegion)
  2. 你可以得到找到坐标(图) :
    F =找到(S)
    X =的getX()
    Y =的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

要查看是否在区域2存在REGION1你可以使用if region2.exists(region1) then