美文网首页
pyautogui图像匹配

pyautogui图像匹配

作者: jinjin1009 | 来源:发表于2022-01-25 20:16 被阅读0次

问题:
采用locateCenterOnScreen 和locateOnScreen这两种方法进行图像识别时,经常出现返回为None,识别不出来对应图片的情况,识别效果不够理想

解决办法:
针对上述问题,考虑基于opencv-python的模版匹配算法进行识图
这个模版匹配算法的原理是,从一张大的背景图中,找到一张你想要的小图

for specific correlation methods only, for TM_SQDIFF or TM_SQDIFF_NORMED the best match would be the minVal
注意:TM_SQDIFF 和 TM_SQDIFF_NORMED 两种算法使用最小值 minVal为最优

cv2.TM_CCOEFF / cv2.TM_CCOEFF_NORMED / cv2.TM_CCORR / cv2.TM_CCORR_NORMED
这四种算法使用最大值maxVal为最优

具体的代码

# 截取当前的屏幕,保存为big.png这张图片
pyautogui.screenshot('big.png')
# 读入当前屏幕的背景截图,0读入的是灰色图
gray = cv2.imread('big.png', 0)
# 读入要匹配查找的图片
img_template = cv2.imread(picture, 0)
# 要匹配查找的图片的宽和高
w, h = img_template.shape[::-1]
# 查找图片和背景截图的匹配操作
res = cv2.matchTemplate(gray, img_template, cv2.TM_SQDIFF)
# min_val为最小值
# max_val为最大值
# min_loc为一个数组,第一个值代表要匹配的图片左上角的横坐标
# min_loc为一个数组,第二个值代表要匹配的图片左上角的纵坐标
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
print(min_val, max_val, min_loc, max_loc)
left = min_loc[0]
top = min_loc[1]
top_left = min_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
# 相应匹配的中心位置为left+w/2和top+h/2
pyautogui.moveTo(left + w / 2, top + h / 2)
pyautogui.click(left + w / 2, top + h / 2)

识别的图片可以用红线框出来让你看到识别的位置

# 框出对应识别出来的图片
# 读入当前屏幕的背景截图,1代表彩色图
color = cv2.imread('big.png', 1)
#画出矩形框
cv2.rectangle(color, top_left, bottom_right, (0, 0, 255), 2)
#关闭坐标
plt.axis('off')
#颜色转换
color = cv2.cvtColor(color, cv2.COLOR_BGR2RGB)
plt.subplot(121), plt.imshow(res, cmap='gray')
plt.title('Matching Result'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(color)
plt.title('Detected Point'), plt.xticks([]), plt.yticks([])
plt.show()

参考:https://blog.csdn.net/qq_43006346/article/details/116353126

相关文章

  • pyautogui图像匹配

    问题:采用locateCenterOnScreen 和locateOnScreen这两种方法进行图像识别时,经常出...

  • 基于python+opencv+pyautogui的图像识别点击

    基于python+opencv+pyautogui的图像识别点击[https://blog.csdn.net/m0...

  • 模式匹配

    模式匹配, 即寻找待匹配图像和全体图像中最相似的部分,用于物体检测任务。将图像A在图像B中匹配的图像框起来 算法基...

  • 027-Opencv笔记-模板匹配

    模板匹配 模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域。所以模板匹配首先需要一个模板图像T(给定的子图...

  • python+opencv 图像识别匹配

    1.图像模板匹配 #使用matchTemplate对原始灰度图像和图像模板进行匹配 res = cv2.match...

  • 图像匹配

    图像匹配论文 多传感器辅助的快速图像匹配算法 李自豪 SIFT(Scale Invariant Feature T...

  • 角点配对与图像匹配

    图像匹配能够应用的场合非常多,如目标跟踪,检测,识别,图像拼接等,而图像匹配最核心的技术就要属角点匹配了,所谓角点...

  • *33我要练成逻辑的这个就是记忆,逻辑的这个就是位置

    要练成图像的作用与逻辑匹配。 图像的功能要和逻辑的关键词匹配。 要练成,图像的这个感觉,就是位置,不会是其他的。图...

  • OpenCV+Python特征匹配

    特征描述符用来表述图像的特征,通过匹配特征描述符来匹配图像的特征。OpenCV官方教程 基本流程 初始化匹配器 调...

  • [PS篇]修图小教程,喜欢漂亮色调一秒调出来

    打开你希望匹配的两张图像(在同一文件不同图层或者不同文件皆可) 选择需要变化的图像,然后选择“图像→调整→匹配颜色...

网友评论

      本文标题:pyautogui图像匹配

      本文链接:https://www.haomeiwen.com/subject/tyrehrtx.html