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

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

1  安装 opencv 和 numpy:

pip3 install opencv-python

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

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

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

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

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

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

pip install -i https://pypi.douban.com/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屏幕找图)