前言
最近微信小游戏跳一跳大热,自己也是中毒颇久,无奈手残最高分只拿到200分。无意间看到教你用Python来玩微信跳一跳一文,在电脑上利用adb驱动工具操作手机,详细的介绍以及如何安装adb驱动可以去看这篇文章,这里就不再介绍了。但是原文每次跳跃需要手动点击,于是想尝试利用图像处理的方法自动化。
最重要的不是最终刷的分数,而是解决这个问题的过程。花了一个下午尝试各种方法,最终采用opencv的模板匹配+边缘检测,方法很简单但效果很好。
本文主要分享如何用Opencv对游戏截图进行检测,自动找到小人和跳跃目标点的位置,计算跳跃距离,从而让电脑帮你玩跳一跳游戏!
本文的代码见https://github.com/moneyDboat/wechat_jump_jump,欢迎fork和star~
主要使用的Python库及对应版本:
python 3.6
opencv-python 3.3.0
numpy 1.13.3
Opencv
首先介绍下opencv,是一个计算机视觉库,本文将用到opencv里的模板匹配和边缘检测功能。
模板匹配
模板匹配是在一幅图像中寻找一个特定目标的方法之一。这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否“相似”,当相似度足够高时,就认为找到了我们的目标。
例如提供小人的模板图片
import cv2 import numpy as np # imread()函数读取目标图片和模板 img_rgb = cv2.imread("0.png", 0) template = cv2.imread('temp1.jpg', 0) # matchTemplate 函数:在模板和输入图像之间寻找匹配,获得匹配结果图像 # minMaxLoc 函数:在给定的矩阵中寻找最大和最小值,并给出它们的位置 res = cv2.matchTemplate(img_rgb,template,cv2.TM_CCOEFF_NORMED) min_val,max_val,min_loc,max_loc = cv2.minMaxLoc(res)
使用OpenCV的matchTemplate函数,就能找到中小人的位置。小人的检测效果非常好,每次都能识别得很精确。
观察到小人跳到物块中心之后,下一个物块中心就会出现白色小圆点,同样可以匹配图中白色小圆点,从而获得跳跃目标点的坐标,计算跳跃的距离。
但是只匹配小圆点获得跳跃目标位置会出现问题,因为有些物块本身就是白色的,导致检测失败,所以我们在检测失败(模板匹配的相似度很低)的情况下采用边缘检测。
边缘检测
边缘检测顾名思义就是检测图片中的边缘,使用opencv中的cv2.Canny函数。
跳一跳的画面很简洁,所以边缘检测的效果很好。检测出边缘后,从上至下扫描图片就能找到下一个物块的大致位置。
img = cv2.imread('1.png', 0) # 先做高斯模糊能够提高边缘检测的效果 img = cv2.GaussianBlur(img,(5,5),0) canny = cv2.Canny(img, 1, 10)
总结
以上就是用OpenCV让电脑帮你玩跳一跳的整体思路,还有很多细节之后再补充,具体的流程见https://github.com/moneyDboat/wechat_jump_jump中的play.py文件,我已经尽力将代码注释写得详尽。
电脑上安装好adb驱动和相关的Python库,手机通过数据线连接电脑,运行play.py,接下来你就可以刷刷剧吃吃零食,然后让电脑帮你刷分啦~
这是我自己的结果截图,自动刷到1000分以上是没有问题的。
还有很多不完善的地方,例如屏幕分辨率适配等,如果有什么更好的想法和建议,欢迎评论共同探讨~~
更多内容大家可以参考专题《微信跳一跳》进行学习。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍教你用 Python 实现微信跳一跳(Mac+iOS版),包括了教你用 Python 实现微信跳一跳(Mac+iOS版)的使用技巧和注意事项,需要的朋友参考一下 这几天看网上好多微信跳一跳破解了,不过都是安卓的,无奈苹果不是开源也没办法。这个教程是 Mac + iOS , 要下xcode 要配置环境小白估计是没戏了,有iOS 开发经验的可以看看 。不过其实可以没事帮同事刷一下,让他们
本文向大家介绍分数霸榜! python助你微信跳一跳拿高分,包括了分数霸榜! python助你微信跳一跳拿高分的使用技巧和注意事项,需要的朋友参考一下 前言 最近微信的跳一跳很火,大家看到排行榜上几百上千的分数,再看看自己百分左右的分数肯定很难过,我手残怪我吗?没关系,如果你跟着我来,也能让你分数霸榜。 原理 首先大家是有一个直观感受,根据两个箱子距离的不同,需要按压的时间也是不一样的,一般来说,
本文向大家介绍微信跳一跳游戏python脚本,包括了微信跳一跳游戏python脚本的使用技巧和注意事项,需要的朋友参考一下 微信更新后出来了一块比较火的小游戏,要是一款不涉及到排行的游戏,可能 没人去关注这款游戏。最开自己一直苦练技术,想在微信排行上面装一装,练了好久才跑三百多分。接着在Github(Github地址),有一个大神发布了,一个Python脚本自动跳,分数随便跳,当然分数不要太高,分
本文向大家介绍微信跳一跳自动运行python脚本,包括了微信跳一跳自动运行python脚本的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了微信小程序跳一跳自动运行脚本,供大家参考,具体内容如下 1、压缩包带了adb等必须工具,配置一下环境变量即可 2、Python 直接运行即可 (Python3.6) 代码: wechat_jump_auto.py simple.py 下载:微信小程
本文向大家介绍使用Python制作微信跳一跳辅助,包括了使用Python制作微信跳一跳辅助的使用技巧和注意事项,需要的朋友参考一下 1. 前言 微信的跳一跳相信大家都很熟悉了,而且现在各种外挂、辅助也是满天飞,反正本人的好友排行榜中已经是八九百都不足为奇了。某宝上一搜一堆结果,最低的居然只要3块多,想刷多少分就刷多少分,真是离谱。 作为一枚程序猿,我决心也自己搞一下,不为别的,一来为了磨练一下自
本文向大家介绍python编写微信远程控制电脑的程序,包括了python编写微信远程控制电脑的程序的使用技巧和注意事项,需要的朋友参考一下 今天来分享一个“高大上”的技术——使用python编写一个可以用微信远程控制电脑的程序! 先来分析一下控制的具体流程: 我们使用微信给特定的邮箱发送一封邮件,其中包含了我们想要电脑执行的命令,然后电脑上的python程序获取到这封邮件,然后解析其中的命令,再交