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

这两天微信跳一跳小程序着实让大家局促了一把,一直点点点实在太费劲!网上有各位大神相续晒出了自己的外挂攻略,看到有用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多

举个栗子

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • thiele插值算法 1点插值算法 function [C,c]=thiele(X,Y,Z)%X为插值点横坐标,Y...
    00crazy00阅读 6,246评论 0 4
  • //出自51博客:www.Amanda0928.51.com 第一章 一、选择题 1.B; (typedef ,t...
    Damongggggg阅读 13,839评论 0 1
  • PHP中GD库的使用 GD简介 PHP 不仅限于只产生 HTML 的输出,还可以创建及操作多种不同格式的图像文件。...
    dptms阅读 4,603评论 0 2
  • 想念一个人是无以言表的记忆,且美好,且深情,且最持久。‍ 难以大声说出的心事留在心底,多年过后沉淀给自己的大多还是...
    王姑娘sunshine阅读 3,328评论 0 1
  • 时光片段 红蔚 一 有些阳光,穿过栀子花 香芬嘀嗒嘀嗒的有声, 这个夏天,与很多的夏天重叠 炎热是一样的,...
    红蔚阅读 1,378评论 0 2