import shutil
import os
wait(5)
dir = os.path.dirname(getBundlePath()) # the folder, where your script is stored
img = capture(SCREEN) # snapshots the screen
shutil.move(img, os.path.join(dir, "shot.png")) # to make it persistent
wait(10)
dir = os.path.dirname(getBundlePath()) # the folder, where your script is stored
img2 = capture(SCREEN) # snapshots the screen
shutil.move(img2, os.path.join(dir, "shot2.png")) # to make it persistent
if img == img2:
popup("hello")
else:
popup("hi")
总是弹出嗨不是你好...虽然我没有改变屏幕。
我可以理解这两个是两个不同的图像名称,这就是为什么else块一直在工作的原因。但是可以比较这两个图像。两个图像的内容,两者之间有一些差异。 无法上传代码所以评论了它..如果有人知道帮助。
答案 0 :(得分:0)
http://doc.sikuli.org/finder.html< - 查看内容的另一种方式
理想情况下,如果您已经有一个与屏幕上的内容进行比较的图像,Sikuli会工作。下面我动态创建一个区域,然后拍照,最后将保存的图片与动态创建的区域进行比较。
imagePath1 = capture() #snapshots the screen
image1 = exists(imagePath1) #Create a Match object
imagePath2 = capture() #snapshots the screen
image2 = Pattern(imagePath2) #Create a Matach Object
myRegion = Region(image1) #make new region from the match object
if myRegion.exists(image2): #look in the region
print "hello" #yeah it's in the region of the screen
else:
print "hi" #nope not there....
这个更像你想要的我相信。您可以拍摄三张不同的照片,然后拍摄您想要的照片。如果您致电getScore()
,则会返回前置匹配http://doc.sikuli.org/match.html#Match
imagePath1 = capture('Match obj take large picture') # snapshots the screen
matchObj1 = exists(imagePath1) #Make match object
imagePath2 = capture('Match obj take large picture') # snapshots the screen
matchObj2 = exists(imagePath2) #Make match object
imagePath3 = capture('Match obj take large picture') # snapshots the screen
matchObj3 = exists(imagePath3) #Make match object
imagePath4 = capture('Target, take small picture') # snapshots the screen
patternIwant = Pattern(imagePath4) #Make a pattern object search against
matchList = [matchObj1, matchObj2, matchObj3]
for m in matchList:
arg = m.exists(patternIwant)
if arg != None:
print 'image score ', arg.getScore()
else:
print 'no match'
if m.exists(patternIwant):
print "hello"
else:
print "hi"