今天偷懒,直接把在内部分享的PPT,拿出来分享。同时去掉了敏感信息。
主要分这3部分来讲。
右边就是UC小游戏的首页,可能有些朋友没有玩过,直接下载UC浏览器,在搜索UC小游戏就可以进入了,也可以通过其他各种隐藏的入口进入。不过很遗憾,目前只有Android 可以玩,iOS 端的小游戏已经下线了。
这个就是UC小游戏其中一款游戏: 翻翻乐。这次的分享,也是围绕这个游戏来得。
大家如果没有装UC小游戏,或者是iOS手机,可以直接用微信扫描这个小游戏码也可以体验。这个也是我模仿UC翻翻乐,借助于微信小游戏平台开发的一款游戏,建议大家在看这篇文章前,可以先行体验一番,更有助于对这篇文章的理解。
另外虽然这是一个简单的小游戏,但麻雀虽小,五脏俱全。后端的游戏服、匹配服、机器人都是完善的,可以跟真人匹配,也可以匹配到机器人。
后端采用的是阿里云服务器,最近阿里云也在打折: https://www.aliyun.com/1111/2019/home?userCode=ip5vy4ju ,最便宜可以花200+ 就拥有自己的服务器,还是3年的。对于我们学习来说,也是完全够用了。
讲完简介,接下来讲最重要的算法部分。
ROI: region of interest ,就是我们感兴趣的部分。在这个UC小游戏中,我们感兴趣的,就是可以点击的24个icon图片。
这次的算法,还是主要用到了OpenCV。
OpenCV支持非常多的平台、领域,这里就不详细介绍了,只做简单的介绍。
最简单的拿来做图片大小变换,在工作中,其实偶尔也会用得上的,可以很有效的帮助工作。
哈哈,也可以用来改图片背景,能剩下不少$呢~ 我在平时也用过几次这个功能,帮自己、帮别人PS 图片。
也可以用来处理视频,在我另一篇文章中有提到: https://blog.csdn.net/weixin_42527719/article/details/85694544
也可以用来做边缘检测,而我们这次的内容,就是需要用到边缘检测。
这个就是经过边缘检测的效果,基本过滤出了我们想要的部分(ROI)
边缘检测的原理: 第一幅图,很明显,从左到右的变化是非常平滑的,可以认为是图像内部是没有边缘的。取其中间横向的一排像素点的灰度值,画在坐标系上,也是一条缓慢下降的直线。 而第二幅图,从图中我们可以看到中间明显的分界线,同样取其中间横向的一排像素点的灰度值,画在坐标系上,我们可以看到中间明显的断层,而这个断层,就是图像内部的边缘。
我们再对上个PPT中的数据进行求导,可以看到第一幅图的像素点求导后,是一条直线,而第二幅图中求导后,在x=127的位置上,导数的值明显比其他位置的大,我们回想一下高中数学,导数绝对值越大,说明斜率越大,即代表这个位置发生了剧烈、断崖式的变化。
所以在边缘检测中,通过求导,如果导数大于某个阈值,我们就可以认为这里是边缘。
当然,OpenCV已经帮我们封装好了,一个函数搞定。100,200 两个参数,就是我们上边说道的阈值。通过调节,我们可以看到,PPT中两幅图的边缘是有点不一样的。在实际应用中,可能也需要我们通过调参来得到一个比较好的效果。
得到左图的边缘之后,我们还需要得到我们感兴趣的区域,24个icon坐标。
通过点击、截图,并取感兴趣的icon,我们得到的就是右图。相当于,我们已经知道答案了。
但对于计算机来说,我们还需要计算他们的相似度,才知道哪两个icon图是一样的。
通过3步骤,我们就可以计算24个icon中两两的相似度,得到相似情况。
这里我们采用minitouch、minicap来提升几年前传统的点击、截图方式。
最终,我们基本能在24s 完成比赛。 如果你体验了开头的小程序,可以在24s 完成游戏吗?
基于计算机视觉的UC小游戏外挂
最新推荐文章于 2024-01-08 01:32:45 发布