python 找色点击_Python实现按键精灵(二)-找图找色
一、实现功能
判断在指定坐标范围内,是否存在相似度大于n的图片,并返回坐标。
二、基本思路
A=你需要寻找的图片
B=截取当前页面中指定范围的图片
利用opencv 判断A在B中的位置,
在该位置截取与A图同大小的图片C
对比图片C与图片A的相似度
三、实现的代码段
1、安装所需要的库
pip install opencv-python
pip install pywin32
2、截取指定坐标的图片
参数说明
filename:保存的文件名
hwnd:窗口句柄 请想办法获取
pos:坐标位置 [x1,y1,x2,y2]。x1,y1 是左上角坐标、x2,y2 指右下角坐标。
该功能可以返回不在最顶层程序的截图。
def window_capture(filename,hwnd=0,pos=None):
hwnd= hwnd #窗口的编号,0号表示当前活跃窗口
#根据窗口句柄获取窗口的设备上下文DC(Divice Context)
hwndDC =win32gui.GetWindowDC(hwnd)#根据窗口的DC获取mfcDC
mfcDC =win32ui.CreateDCFromHandle(hwndDC)#mfcDC创建可兼容的DC
saveDC =mfcDC.CreateCompatibleDC()#创建bigmap准备保存图片
saveBitMap =win32ui.CreateBitmap()#获取监控器信息
MoniterDev =win32api.EnumDisplayMonitors(None, None)if pos==None:
x1=0
y1=0
w= MoniterDev[0][2][2]
h= MoniterDev[0][2][3]else:
x1=pos[0]
y1=pos[1]
w=pos[2]-pos[0]
h=pos[3]-pos[1]#print w,h #图片大小
#为bitmap开辟空间
saveBitMap.CreateCompatibleBitmap(mfcDC, MoniterDev[0][2][2], MoniterDev[0][2][3])#高度saveDC,将截图保存到saveBitmap中
saveDC.SelectObject(saveBitMap)#截取从左上角(0,0)长宽为(w,h)的图片
saveDC.BitBlt((x1, y1), (w, h), mfcDC, (x1, y1), win32con.SRCCOPY)
saveBitMap.SaveBitmapFile(saveDC, filename)
3、利用opencv 判断A在B中的位置
参数说明
target:cv2.imread(“图片B”)
template:cv2.imread(“图片A”)
deffind_picture(target,template):#获得模板图片的高宽尺寸
theight, twidth = template.shape[:2]#执行模板匹配,采用的匹配方式cv2.TM_SQDIFF_NORMED
result =cv2.matchTemplate(target,template,cv2.TM_SQDIFF_NORMED)#归一化处理
cv2.normalize( result, result, 0, 1, cv2.NORM_MINMAX, -1)#寻找矩阵(一维数组当做向量,用Mat定义)中的最大值和最小值的匹配结果及其位置
min_val, max_val, min_loc, max_loc =cv2.minMaxLoc(result)#匹配值转换为字符串
#对于cv2.TM_SQDIFF及cv2.TM_SQDIFF_NORMED方法min_val越趋近与0匹配度越好,匹配位置取min_loc
#对于其他方法max_val越趋近于1匹配度越好,匹配位置取max_loc
strmin_val =str(min_val)#绘制矩形边框,将匹配区域标注出来
#min_loc:矩形定点
#(min_loc[0]+twidth,min_loc[1]+theight):矩形的宽高
#(0,0,225):矩形的边框颜色;2:矩形边框宽度
cv2.rectangle(target,min_loc,(min_loc[0]+twidth,min_loc[1]+theight),(0,0,225),2)#显示结果,并将匹配值显示在标题栏上
#cv2.imshow("MatchResult----MatchingValue="+strmin_val,target)
#cv2.waitKey()
#cv2.destroyAllWindows()
x=min_loc[0]
y=min_loc[1]return X,Y
4、返回指定图片的指定位置指定坐标
#target原始图片#x,y 起始坐标#w,h 返回的宽长
defget_pic_from_pic(x,y,w,h,target):
region= target[y:y+h,x:x+w]
retrun region
5、比较两个图片的相似度
defcompare_picture( imageA, imageB):#灰度图片比较
grayA =cv2.cvtColor(imageA, cv2.COLOR_BGR2GRAY)
grayB=cv2.cvtColor(imageB, cv2.COLOR_BGR2GRAY)
(score, diff)= compare_ssim(grayA, grayB, full=True)return float(score)
python 找色点击_Python实现按键精灵(二)-找图找色相关推荐
- python 找色点击_python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
Python图片处理模块PIL(pillow) pywin32的主要作用 1.捕获窗口: 2.模拟鼠标键盘动作: 3.自动获取某路径下文件列表: 4.PIL截屏功能 找色点击功能思路: 抓取当前屏幕快 ...
- python 按键精灵识图_Python实现按键精灵(二)-找图找色
一.实现功能 判断在指定坐标范围内,是否存在相似度大于n的图片,并返回坐标. 二.基本思路 A=你需要寻找的图片 B=截取当前页面中指定范围的图片 利用opencv 判断A在B中的位置, 在该位置截取 ...
- python2定点找色_Python实现按键精灵(二)-找图找色
一.实现功能 判断在指定坐标范围内,是否存在相似度大于n的图片,并返回坐标. 二.基本思路 A=你需要寻找的图片 B=截取当前页面中指定范围的图片 利用opencv 判断A在B中的位置, 在该位置截取 ...
- python找色_python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
Python图片处理模块PIL(pillow) pywin32的主要作用 1.捕获窗口: 2.模拟鼠标键盘动作: 3.自动获取某路径下文件列表: 4.PIL截屏功能 找色点击功能思路: 抓取当前屏幕快 ...
- python图色模拟脚本_python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
Python图片处理模块PIL(pillow) pywin32的主要作用 1.捕获窗口: 2.模拟鼠标键盘动作: 3.自动获取某路径下文件列表: 4.PIL截屏功能 找色搜索功能思路: 抓取当前屏幕快 ...
- python模拟网页点击_python怎么模拟点击网页按钮
python怎么模拟点击网页按钮 前提环境: Python3 和 Visual Studio Code安装完毕 . 安装selenium : 在终端输入: pip install selenium, ...
- python模拟网页点击_python模拟点击
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python怎么模拟点击网页按钮前提环境:python3 和 visual st ...
- python做按键精灵脚本_Python 实现按键精灵的功能,超简单详细(MAC版)
前言: 想看Windows版的同窗能够看Python 实现按键精灵的功能,超简单详细(Windows版) 以前写了Windows版的python实现按键精灵功能.如今我鸟枪换炮换了个新的mac.发现以 ...
- android 多个按键精灵,给大家分享一个,按键精灵安卓版,找多图, 以及找多图返回多个坐标的,相信大家绝对用得到 _ 按键精灵手机版 - 按键精灵论坛...
大家感觉有用的回复多多支持一下,下面这个找图代码,是我平时写代码,都用到的,我感觉不错,毕竟用起来有大漠的感觉,哈哈 //TracePrint "--" Dim 找图组合,图片数组 ...
- python模拟屏幕点击_python模拟鼠标点击教程
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pywin32 pip install pyHook?1.5.1?cp37?cp37 ...
最新文章
- 阿里云 centos oracle安装
- hdu1251 hash或者字典树
- oracle中order by 2,关于oracle中ROWNUM和ORDER BY的问题(2)
- java违反唯一约束异常_Caused by: java.sql.BatchUpdateException: ORA-00001: 违反唯一约束条件 (DSPACE.SYS_C007868)...
- 基于java的土地档案管理系统设计(含源文件)
- 【C++基础学习】引起类模板被实例化情形总结
- Hibernate关联关系映射之一对一关联关系
- macos下安装redis客户端
- css中如何实现导航栏横向,css横向导航栏
- dpdk大页内存实现
- 微信小程序报错:invalid credential, access_token is invalid or not latest
- day53_电力系统_ztree动态生成权限控制
- ubnt+ros 接入无线
- AS3中将TUIO协议转换到传统触摸事件
- 小米手机连接电脑只能看到部分相片_小米手机连接电脑后怎么看照片?
- matlab三元一次方程组的解包含未知数,用matlab解三元一次方程组_matlab解高阶方程_matlab二分法求方程的近似解...
- redis如何查看主从状态信息master和salve
- 随便拍几张照片赚了3K,近期的风口视频项目
- 第一次毕业设计任务书
- gboard包名_如何在Android的Gboard键盘中搜索表情符号和GIF