前言
成都创新互联主要从事网站建设、成都网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务当阳,10年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792最近微信小游戏跳一跳大热,自己也是中毒颇久,无奈手残最高分只拿到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)
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。