MonkeyRunner_monkey runner下圖片比對

from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
import os
import time
import math
import re
 
def getx(n):
if n in ('1', '4', '7'):
return 50
elif n in ('2', '5', '8', '0'):
return 100
else:
return 200
def gety(n):
if n in ('1', '2', '3'):
return 150
elif n in ('4', '5', '6'):
return 200
elif n in ('7', '8', '9'):
return 250
else:
return 300
 
sqrt = re.compile(r'([0-9]+)')
percent = re.compile(r'([0-9]+)\%0f([0-9]+)')
print "Waiting for device!"
 
device = MonkeyRunner.waitForConnection()
 
print "Connected to device!"
 
dummy = raw_input('press enter to start')
prev_question = ''
 
for i in range(300):
filename = "%d.png" % i
device.takeSnapshot().getSubImage((10, 10, 220, 40)).writeToFile(filename, 'png')
question = os.popen("./ocr.sh %s" % filename).read()
try:
if '+' not in question and '-' not in question and '/' not in question and '*' not in question and '%' not in question and 'i' not in question:
result = int(question[0:-1]) * int(question[0:-1])
elif '%' in question:
result = int(percent.search(question).group(1)) * int(percent.search(question).group(2)) / 100;
else:
result = eval(question)
except:
continue
if i > 0 and prev_question == question:
continue
print "%s = %d" % (question, result)
result_str = str(result)
if '.' in question and '.' not in result_str:
result_str += '.0'
if 'm' in question:
result_str = sqrt.search(result_str).group(1)
time.sleep(0.1)
for ch in result_str:
device.touch(getx(ch), gety(ch), 'DOWN_AND_UP')
time.sleep(0.1)
prev_question = question

在python下對比兩張圖片是一件很容易的事情,在monkey runner下進行圖片比對我還沒有找到好的方法,python 中的PIL調用的是C模塊,而monkey runner是java,所以不能在monkey runner中直接使用PIL庫,還好上面的代碼給了我解決問題的思路,在monkey runner中建立compareImage.sh,然後執行python腳本比對不就OK了嗎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章