python找不同_用Python玩大家来找茬

Jupyter Notebook:用Python玩大家来找茬​fivecakes.com

最近学习计算机视觉的时候遇到找两张图片不同的问题,找到解决方案后,在QQ游戏大家来找茬中实验了一下效果.

要找不同首先得把两张图片提取出来嘛,我们先把电脑屏幕截图,然后再提取我们需要的图片.

我对比过pyscreenshot,PIL和win32gui三种截屏库的截屏速度,发现PIL比其他的截屏方式快那么一点.

屏幕截图有了,现在我们来提取其中我们需要的两幅图,首先我想到的是用边缘检测提取边界,不过效果不是很理想

所以我想先用颜色来区分一下,先来把目标图片和背景图片的颜色分布画出来,方便我们观察

从上图中我们发现背景的色调和饱和度比较集中,所以我们可以通过这两个颜色通道来过滤掉背景

统计一下x轴方向和y轴方向符合条件的像素点的个数,并且把数量统计画成折线图.

通过折线图发现在图片的边缘处折线图会出现明显的断崖,我们可以根据这点来提取出图片

接下来通过阀值简化图形

下面循环一下找出断崖处的坐标

[98, 120, 486, 515]

[409, 431, 917, 1002, 1488, 1500, 1504, 1504]

至此,我们已经找出了颜色变化明显处的x坐标和y左边,接下来我们通过排列组合的方式,找出这些坐标所绘制出的直线可能组合成的矩形.

不过,还是有很多矩形不是我们想要的,所以还需要用矩形的长宽作为阀值来进一步筛选

OK,需要的图片提取出来之后,我们可以开始找两张图片的不同啦.

我们将两幅图的色值相减并取绝对值,这时打印一下结果会明显的发现不同的地方

接下来,用圆圈画出不同之处

python中win32api库可以调用windows的API模拟鼠标点击操作,我们可以将所有不同之处模拟鼠标进行点击.

至此,完成使用Python完找不同游戏.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值