1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > python opencv屏幕找图_使用Python+OpenCV进行图像模板匹配(Match Template)实例-

python opencv屏幕找图_使用Python+OpenCV进行图像模板匹配(Match Template)实例-

时间:2019-11-21 00:45:33

相关推荐

python opencv屏幕找图_使用Python+OpenCV进行图像模板匹配(Match Template)实例-

意图:准备一张小图,在电脑屏幕上找到小图坐标,并点击。

1 安装 opencv 和 numpy:

pip3 install opencv-python

上述命令将opencv 和 numpy都安装了,可以在类似D:\Python36\Lib\site-packages目录下看到

2 准备小图,用浏览器打开,用截图工具或PrtSc键截取百度首页的那个“百度一下”button,另存为bd.png

3、用程序截屏,存为screen.png,导入两张图片,匹配,找到坐标,点击。

由于还没有PIL,先pip3 install PIL 结果提示:No matching distribution found for PIL

先 pip3 install Pillow 提示已经安装了... ...尴尬

为了进行鼠标点击,安装pyautogui

pip install -i /simple/ pyautogui

最终代码:

# -*- coding: utf-8 -*-import pyautogui

import cv2

import numpyasnpfromPIL import ImageGrab

#截屏,同时提前准备一张屏幕上会出现的小图bd.png

im=ImageGrab.grab()

im.save('screen.png','png')

#加载原始RGB图像

img_rgb= cv2.imread("screen.png")

#创建一个原始图像的灰度版本,所有操作在灰度版本中处理,然后在RGB图像中使用相同坐标还原

img_gray=cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)

#加载将要搜索的图像模板

template= cv2.imread('bd.png',0)

#使用matchTemplate对原始灰度图像和图像模板进行匹配

res=cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)

#设定阈值,0.7应该可以

threshold= 0.999#res大于99.9%loc= np.where( res >=threshold)

#得到原图像中的坐标for pt in zip(*loc[::-1]):

print(pt[0],pt[1])

pyautogui.click(pt[0],pt[1])break#cv2.destroyAllWindows()

print("the end")

注意:测试时要把baidu首页的按钮显示在屏幕上。

另外代码好像还是写复杂了,应该可以直接用minMaxLoc获取坐标点。

python opencv屏幕找图_使用Python+OpenCV进行图像模板匹配(Match Template)实例-找到百度首页按钮并点击...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。