python2定点找色_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)
#清楚图片数据,防止内存泄露win32gui.DeleteObject(saveBitMap.GetHandle())
saveDC.DeleteDC()
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)
python2定点找色_Python实现按键精灵(二)-找图找色相关推荐
- python找色_python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
Python图片处理模块PIL(pillow) pywin32的主要作用 1.捕获窗口: 2.模拟鼠标键盘动作: 3.自动获取某路径下文件列表: 4.PIL截屏功能 找色点击功能思路: 抓取当前屏幕快 ...
- python 按键精灵识图_Python实现按键精灵(二)-找图找色
一.实现功能 判断在指定坐标范围内,是否存在相似度大于n的图片,并返回坐标. 二.基本思路 A=你需要寻找的图片 B=截取当前页面中指定范围的图片 利用opencv 判断A在B中的位置, 在该位置截取 ...
- 找茬小程序源码、看图找不同小程序,前端+后端+教程,微信小程序游戏一起来找茬,全网首发一款可以完美运营的找茬小程序源码
演示小程序搜[最强脑洞I全民烧脑] 一共有2510关, 达到高级后会随机出现关卡: 一共7个能量, 每闯关一次扣除一个能量值, 看激励视频可以获得一个能量值: 金币获取: 段位升级 或者 观看激励视频 ...
- 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截屏功能 找色点击功能思路: 抓取当前屏幕快 ...
- android 多个按键精灵,给大家分享一个,按键精灵安卓版,找多图, 以及找多图返回多个坐标的,相信大家绝对用得到 _ 按键精灵手机版 - 按键精灵论坛...
大家感觉有用的回复多多支持一下,下面这个找图代码,是我平时写代码,都用到的,我感觉不错,毕竟用起来有大漠的感觉,哈哈 //TracePrint "--" Dim 找图组合,图片数组 ...
- python做按键精灵脚本_Python 实现按键精灵的功能,超简单详细(MAC版)
前言: 想看Windows版的同窗能够看Python 实现按键精灵的功能,超简单详细(Windows版) 以前写了Windows版的python实现按键精灵功能.如今我鸟枪换炮换了个新的mac.发现以 ...
- 按键精灵简单的限时找图并点击
直接上代码不多说: Sub 限时找图并点击(左上角X,左上角Y,右下角X,右下角Y,偏移X,偏移Y,路径,间隔,备注) Call Plugin.Msg.Tips(备注) TracePr ...
- python多点找色找图_[按键精灵教程]带你了解多点找色、多点比色
金猪脚本(原飞猪脚本)以按键精灵教学为主,涉及UiBot,Python,Lua等脚本编程语言,教学包括全自动办公脚本,游戏辅助脚本,引流脚本,网页脚本,安卓脚本,IOS脚本,注册脚本,点赞脚本,阅读脚 ...
最新文章
- 如何看服务器java_如何查看Windows服务器运行了多长时间
- 2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 H题 Rock Paper Scissors Lizard Spock.(FFT字符串匹配)...
- 如何查linux系统安装时间查询,Linux系统怎样查询当前的系统时间
- 5分钟了解CDN 加速原理 | +新书推荐
- 【机器学习】降维技术-PCA
- vscode中如何运行git
- 【福利】3980元的web前端视频教程限量领取!!!
- 阿里二面:外部接口大量超时,把整个系统拖垮,引发雪崩!如何解决?熔断......
- MySQL 查询时强制区分大小写
- 蓝桥杯 ALGO-78 算法训练 确定元音字母位置
- broker druid 查询_即时查询工具| Druid
- 零基础自学Java要多久,是不是很难?
- Oracle RAC 11g实战指南
- 电源管理IC临近爆发,详解四大市场趋势
- 关于numeric_limits
- Android常见内存泄漏及优化总结
- 直播网站程序源码,搜索框实现快速搜索功能
- python 打印日历
- “天涯棋客”回沪教棋
- 从零开始快速配置个人博客
热门文章
- [云炬创业基础笔记] 第四章测试4
- USTC English Club Note20211223
- matlab中大括号的使用 { },可以装4维的数据
- 有机发光二极管显示器测试方法_有机激光二极管从梦想变为现实
- U-net:实用图像分割、特征提取深度框架
- 为TIF、JPG图片添加地理坐标/平面直角坐标
- PowerDesigner显示注释字段问题
- WebService中因 URL 意外地以“/******”结束,请求格式无法识别。
- 【CyberSecurityLearning 23】mail server(邮件投递原理)
- Vim 高亮显示单词并查找