美文网首页
图像识别应用-微信跳一跳

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

作者: 烨枫_邱 | 来源:发表于2018-01-04 19:52 被阅读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多

    举个栗子

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

    相关文章

      网友评论

          本文标题:图像识别应用-微信跳一跳

          本文链接:https://www.haomeiwen.com/subject/bzhdnxtx.html