输入文字
text = "YourPassword"
os.system(f"adb shell input text {text}")
复制代码
删除字符
有时候输入框会有输入缓存,我们需要删除字符。
# 删除10个字符
for i in range(10):
os.system("adb shell input keyevent 67")
复制代码
查询当前运行的包名和Activity
通过下面的代码可以查询当前运行程序的Activity,也可以顺便查看包名。
adb shell dumpsys activity activities
复制代码
停止应用程序
有时需要停止一个应用程序,需要提供应用程序的包名。
adb shell am force-stop tw.sonet.princessconnect
复制代码
打开应用程序
要打开应用程序,您需要提供包名称和 Activity。
adb shell am start -W -n tw.sonet.princessconnect/jp.co.cygames.activity.OverrideUnityActivity
复制代码
图像处理
处理图像的第一件事是搜索图像。 比如Airtest提供的,无非就是判断截图里有没有图片,有的话在什么地方。
此外,还需要一些切口。 比如我们要获取账号id和账号级别,就需要截取一部分图片,然后进行OCR操作。
图片搜索
图片搜索好像是先获取两张图片,然后调用cv2.matchTemplate方法判断是否存在以及位置。 这里的匹配是比较模糊的匹配,会有相似的概率,最高为1。我们设置一个阈值来判断模板是否在截图中。
截图如下,文件名为tmp.png:
模板如下:
代码如下:
import cv2
def image_to_position(screen, template):
image_x, image_y = template.shape[:2]
result = cv2.matchTemplate(screen, template, cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
print("prob:", max_val)
if max_val > 0.98:
global center
center = (max_loc[0] + image_y / 2, max_loc[1] + image_x / 2)
return center
else:
return False
if __name__ == "__main__":
screen = cv2.imread('tmp.png')
template = cv2.imread('Xuandan.png')
print(image_to_position(screen, template))
复制代码
运行上面的代码后,可以看到模板匹配的概率为0.9977,位置为(1165,693)。 对于一张图片,左上角是原点。 由于我的帧率是1280*720,所以右下角的坐标是(1280,720)。 你可以看到我们的菜单似乎就在右下角。
如何快速裁剪模板? (win10)
游戏脚本虽然不难写,但是需要切很多图,而且这个图的码率必须和原图一样。我发现如果在win10中打开图片为图片