You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python结合OpenCV与PyAutoGUI检测模板坐标?

使用Python+OpenCV+PyAutoGUI检测屏幕模板坐标

嘿,我把这段用于检测屏幕指定区域内模板坐标的代码整理并补全了,关键步骤也给你标注清楚了:

import cv2
import numpy as np
import pyautogui as pag

# 截取屏幕上指定区域的截图
# region参数格式:(x起始坐标, y起始坐标, 区域宽度, 区域高度)
region = (460, 400, 600, 400)
pag.screenshot('da2.png', region=region)

# 读取截图和模板图,进行图像预处理
img_rgb = cv2.imread('da2.png')
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)  # 转换为灰度图,减少计算量
template = cv2.imread('player2.png', 0)  # 0表示直接以灰度模式读取模板图
w, h = template.shape[::-1]  # 获取模板的宽和高

# 执行模板匹配,使用归一化相关系数匹配方法
res = cv2.matchTemplate(img_gray, template, cv2.TM_CCOEFF_NORMED)
threshold = 0.6335  # 匹配阈值,值越高匹配精度要求越高

# 筛选出匹配度超过阈值的坐标位置
loc = np.where(res >= threshold)

# 在原图上标记所有匹配到的区域
for pt in zip(*loc[::-1]):
    cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0, 0, 255), 2)

# 保存标记后的结果图,或者直接显示
cv2.imwrite('result.png', img_rgb)
# cv2.imshow('Matched Result', img_rgb)
# cv2.waitKey(0)
# cv2.destroyAllWindows()

关键步骤说明

  • 屏幕区域截图:通过PyAutoGUI的screenshot方法截取指定坐标范围的屏幕内容,避免全图检测的冗余计算
  • 灰度转换:将截图和模板都转为灰度图,消除颜色干扰,同时降低图像数据量,提升匹配速度
  • 模板匹配:选用TM_CCOEFF_NORMED方法,返回的匹配结果是归一化后的数值,方便通过阈值筛选有效匹配
  • 阈值筛选:设置0.6335作为匹配阈值,只有匹配度超过这个值的位置才会被认定为有效目标
  • 结果标记:遍历所有有效匹配点,用红色矩形框在原图上标记出模板所在位置,方便直观查看

内容的提问来源于stack exchange,提问作者san yi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:52:34