图像识别应用-微信跳一跳

2018-01-04  本文已影响0人  烨枫_邱

这两天微信跳一跳小程序着实让大家局促了一把,一直点点点实在太费劲!网上有各位大神相续晒出了自己的外挂攻略,看到有用Python实现的,效果很不错,基于图像识别;想到之前也琢磨了些图像识别的方法,正好是个机会把之前学习过的东西拿出来用一用,废话不多说,直接开干!

用到的知识点如下:(下面代码使用Java API实现,思路和Python大神有许多不同)

1.TemplateMatching(模板匹配)

老生常谈的一个方法,用来定位筛子的位置,在此记为(X0, Y0)

2.Canny边缘检测 + 连通区域识别

用来做判断下一个跳击点,在此记为(X1,Y1)

3.勾股定律计算两点间的直线段距离

double value = Math.pow(x_TM-x1,2) + Math.pow(y_TM-y1,2);  int distance = (int)Math.sqrt(value);

4.设置时间系数(约等于1.129)

5.手机端ADB命令执行按压跳转

String command = "adb -s " + serialnumber + " shell input swipe " + x_TM + " " + y_TM + " " + x_TM + " " + y_TM + " " + duration;

注意:此处adb命令中采用【serialnumber】是为了在一台PC上可以同时带多台Device玩


具体实现如下:

1. 设置Template模板(仔细看,是不是跳筛子身体上的一部分?!)

设置好模板图

2.实时截屏

比较普通的截屏方式

3.模板匹配

获取所在位置的坐标

4.边缘检测

边缘检测结果,同时获取连通区域的List 最优连通区域判定部分代码

5.根据得到的连通区域和TM坐标排序,分析;推导出最优解  下面列出部分代码

6.计算要跳转的直线段

像素计算 两点间的直线段长度

7.交给ADB进行最后操作

坐标值+DurationTime

8.最后等着出结果;由于时间有限,跳了10分钟就让它停了,据说最高能到4000多

举个栗子

好了,整个过程的介绍就到此结束了;做的过程中主要回忆了一下之前讲过的几种图像处理的方法,除了自动化测试框架以外,在此均涉及到了;真的是一个练手的好例子;希望大家有空也试试,相互切磋不断前进!

上一篇下一篇

猜你喜欢

热点阅读