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

如何用Python+OpenCV识别确认按钮坐标并实现自动点击?

基于Python+OpenCV识别并自动点击"CONFIRM"按钮

以下是优化后的代码,实现识别界面中"CONFIRM"按钮的坐标并自动点击的功能:

import time
import cv2
from pytesseract import pytesseract
import numpy as np
import pyscreenshot as pysc
import pyautogui as g

# 设置Tesseract OCR路径
pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

# 截图区域的边界框(左、上、右、下),根据实际界面调整
SCREEN_BBOX = (671, 564, 1300, 951)

while True:
    # 截取指定区域屏幕,直接转为numpy数组,无需保存到本地
    screen = np.array(pysc.grab(bbox=SCREEN_BBOX))
    # 转换为灰度图,提高OCR识别准确率
    gray_screen = cv2.cvtColor(screen, cv2.COLOR_BGR2GRAY)
    
    # 使用image_to_data获取文字的详细位置信息
    data = pytesseract.image_to_data(gray_screen, output_type=pytesseract.Output.DICT)
    confirm_found = False
    
    # 遍历识别到的所有文字
    for i in range(len(data['text'])):
        text = data['text'][i].strip()
        if text == 'CONFIRM':
            # 获取文字的边界框坐标(相对于截图区域)
            x_min = data['left'][i]
            y_min = data['top'][i]
            x_max = x_min + data['width'][i]
            y_max = y_min + data['height'][i]
            
            # 计算按钮中心坐标,转换为全局屏幕坐标
            center_x = SCREEN_BBOX[0] + (x_min + x_max) // 2
            center_y = SCREEN_BBOX[1] + (y_min + y_max) // 2
            
            print(f"找到CONFIRM按钮,坐标:({center_x}, {center_y})")
            # 自动点击按钮
            g.click(center_x, center_y)
            confirm_found = True
            break  # 找到后退出循环,避免重复点击
    
    if not confirm_found:
        print("未检测到CONFIRM按钮")
    
    # 设置循环间隔,避免占用过高CPU资源
    time.sleep(0.5)

关键改进说明:

  • 跳过本地文件保存:直接使用截图的numpy数组进行处理,减少IO操作,提高效率
  • 灰度图预处理:将截图转为灰度图,减少色彩干扰,提升OCR识别准确率
  • 精准定位坐标:通过image_to_data获取文字的边界框信息,计算按钮中心并转换为全局屏幕坐标(因为截图是局部区域,需要加上区域起始坐标的偏移量)
  • 自动点击逻辑:检测到按钮后立即调用pyautogui.click()完成点击,同时添加循环间隔避免资源浪费

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 17:08:09