一、实现功能

判断在指定坐标范围内,是否存在相似度大于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实现按键精灵(二)-找图找色相关推荐

  1. python找色_python实现按键精灵找色点击功能教程,使用pywin32和Pillow库

    Python图片处理模块PIL(pillow) pywin32的主要作用 1.捕获窗口: 2.模拟鼠标键盘动作: 3.自动获取某路径下文件列表: 4.PIL截屏功能 找色点击功能思路: 抓取当前屏幕快 ...

  2. python 按键精灵识图_Python实现按键精灵(二)-找图找色

    一.实现功能 判断在指定坐标范围内,是否存在相似度大于n的图片,并返回坐标. 二.基本思路 A=你需要寻找的图片 B=截取当前页面中指定范围的图片 利用opencv 判断A在B中的位置, 在该位置截取 ...

  3. 找茬小程序源码、看图找不同小程序,前端+后端+教程,微信小程序游戏一起来找茬,全网首发一款可以完美运营的找茬小程序源码

    演示小程序搜[最强脑洞I全民烧脑] 一共有2510关, 达到高级后会随机出现关卡: 一共7个能量, 每闯关一次扣除一个能量值, 看激励视频可以获得一个能量值: 金币获取: 段位升级 或者 观看激励视频 ...

  4. python图色模拟脚本_python实现按键精灵找色点击功能教程,使用pywin32和Pillow库

    Python图片处理模块PIL(pillow) pywin32的主要作用 1.捕获窗口: 2.模拟鼠标键盘动作: 3.自动获取某路径下文件列表: 4.PIL截屏功能 找色搜索功能思路: 抓取当前屏幕快 ...

  5. python 找色点击_python实现按键精灵找色点击功能教程,使用pywin32和Pillow库

    Python图片处理模块PIL(pillow) pywin32的主要作用 1.捕获窗口: 2.模拟鼠标键盘动作: 3.自动获取某路径下文件列表: 4.PIL截屏功能 找色点击功能思路: 抓取当前屏幕快 ...

  6. android 多个按键精灵,给大家分享一个,按键精灵安卓版,找多图, 以及找多图返回多个坐标的,相信大家绝对用得到 _ 按键精灵手机版 - 按键精灵论坛...

    大家感觉有用的回复多多支持一下,下面这个找图代码,是我平时写代码,都用到的,我感觉不错,毕竟用起来有大漠的感觉,哈哈 //TracePrint "--" Dim 找图组合,图片数组 ...

  7. python做按键精灵脚本_Python 实现按键精灵的功能,超简单详细(MAC版)

    前言: 想看Windows版的同窗能够看Python 实现按键精灵的功能,超简单详细(Windows版) 以前写了Windows版的python实现按键精灵功能.如今我鸟枪换炮换了个新的mac.发现以 ...

  8. 按键精灵简单的限时找图并点击

    直接上代码不多说: Sub 限时找图并点击(左上角X,左上角Y,右下角X,右下角Y,偏移X,偏移Y,路径,间隔,备注)     Call Plugin.Msg.Tips(备注)     TracePr ...

  9. python多点找色找图_[按键精灵教程]带你了解多点找色、多点比色

    金猪脚本(原飞猪脚本)以按键精灵教学为主,涉及UiBot,Python,Lua等脚本编程语言,教学包括全自动办公脚本,游戏辅助脚本,引流脚本,网页脚本,安卓脚本,IOS脚本,注册脚本,点赞脚本,阅读脚 ...

最新文章

  1. 如何看服务器java_如何查看Windows服务器运行了多长时间
  2. 2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 H题 Rock Paper Scissors Lizard Spock.(FFT字符串匹配)...
  3. 如何查linux系统安装时间查询,Linux系统怎样查询当前的系统时间
  4. 5分钟了解CDN 加速原理 | +新书推荐
  5. 【机器学习】降维技术-PCA
  6. vscode中如何运行git
  7. 【福利】3980元的web前端视频教程限量领取!!!
  8. 阿里二面:外部接口大量超时,把整个系统拖垮,引发雪崩!如何解决?熔断......
  9. MySQL 查询时强制区分大小写
  10. 蓝桥杯 ALGO-78 算法训练 确定元音字母位置
  11. broker druid 查询_即时查询工具| Druid
  12. 零基础自学Java要多久,是不是很难?
  13. Oracle RAC 11g实战指南
  14. 电源管理IC临近爆发,详解四大市场趋势
  15. 关于numeric_limits
  16. Android常见内存泄漏及优化总结
  17. 直播网站程序源码,搜索框实现快速搜索功能
  18. python 打印日历
  19. “天涯棋客”回沪教棋
  20. 从零开始快速配置个人博客

热门文章

  1. [云炬创业基础笔记] 第四章测试4
  2. USTC English Club Note20211223
  3. matlab中大括号的使用 { },可以装4维的数据
  4. 有机发光二极管显示器测试方法_有机激光二极管从梦想变为现实
  5. U-net:实用图像分割、特征提取深度框架
  6. 为TIF、JPG图片添加地理坐标/平面直角坐标
  7. PowerDesigner显示注释字段问题
  8. WebService中因 URL 意外地以“/******”结束,请求格式无法识别。
  9. 【CyberSecurityLearning 23】mail server(邮件投递原理)
  10. Vim 高亮显示单词并查找