如何让程序捕捉屏幕的一部分并存储为imag

2024-09-19 23:45:08 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我想捕捉一张图像,图像s,它总是在同一个区域。然后它就会消失,可能会在另一个区域出现,也可能不会再出现。在

我希望程序捕捉它第一次出现的时候,如果它再次出现在另一个区域,然后单击一组按钮,否则移动到另一个功能。在

另一个问题是每次调用函数时图像都会发生变化,但它仍保持在相同的位置。在

以下是我的代码:

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

我没有发现错误,但它似乎不起作用。有什么想法吗?在


Tags: 图像区域ifpngexistselsepatternclick
2条回答
  1. 我觉得你应该改变一下:
    s=屏幕截图(第一区域)
    为此:
    s=捕获(第一个区域)
  2. 您可以使用find(image)获得坐标:
    f=查找
    x=获取x()
    y=getY()
  3. 最后,如果要获取次数,可以将变量传递给函数:

    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:如果我的英语不好,我很抱歉:)

要查看region1是否存在于region2中,可以使用if region2.exists(region1) then。在

相关问题 更多 >