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

news/2024/11/25 2:49:00/

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完找不同游戏.


http://www.ppmy.cn/news/272112.html

相关文章

封校大学生在宿舍无聊玩起图像大找茬——一个关于游戏的练手小项目(一起领略Python脚本的风采吧)

???一个帅气的boy,你可以叫我 ?? 个人主页:的个人主页 ???如果对你有帮助的话希望三连???支持一下博主 图像大找茬 前言基础知识图片找茬抓取句柄图片GUI界面搭建 前言 在一个月黑风高的夜晚,我的舍友小许摇起我来,面…

大家来找茬图片比较脚本

第一份代码是比较两幅图,找出差异来。 # -*- coding: cp936 -*- import ctypes import Image, ImageGrab, ImageChops#构造RECT结构体 class RECT(ctypes.Structure): _fields_ [(left, ctypes.c_long), (top, ctypes.c_long), (right, ctypes.c_long), …

python系列:玩转大家来找茬

心血来潮,想写个大家来找茬的外挂。 先说下大致思路: 1.利用python调用win32截取QQ游戏的大家来找茬的两幅图。 2.计算两幅图的差值图像 3.对插值图像过滤,色域筛选,二值化,圈出差异轮廓 4.将差异轮廓的坐标&#…

【Python】QQ大家来找茬辅助

辅助环境准备: 1、下载并安装Python3。(https://www.python.org/ftp/python/3.8.3/python-3.8.3-amd64.exe) 2、安装pywin32、pillow库。(以下都是用的清华大学的pip源安装) pip install -i https://pypi.tuna.tsingh…

欢迎大家来找茬 bug在哪里?

(function () { $(.monitor .tabs).on(click, a, function () { $(this).addClass(active).siblings(a).removeClass(active) // console.log($(this).index()); 点击的索引号 $(.monitor .content).eq($(this).index()).show().siblings(.content).hide() }) //克隆行 $(.marq…

大家来找茬 两幅图像相减 其它好的实现?

#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv; int main() {Mat img1 imread("D:\\image\\img1.jpg");Mat img2 imread("D:\\image\\img2.jpg");//两幅图像的大小需要一致 Mat img_result1…

大家来找茬辅助工具实现

昨天看到同学在玩大家来找茬&#xff0c;一时兴起&#xff0c;打算自己写个辅助工具。其实游戏很简单&#xff0c;就是找出两幅图片中的不同之处。游戏规则了解了&#xff0c;那外挂的思路也就很明朗了只要对比两幅图片的像素&#xff0c;有不相同就存储进数组就可以了。有了思…

大家来找茬的部分代码

HWND hGame ::FindWindow(NULL, "大家来找茬"); if (hGame 0) { MessageBox("未找到窗口"); } else { ::SetWindowPos(hGame,HWND_TOP,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); HDC hDC ::GetDC(hGame); int i, j; int nClrLeft…