python 大图里 找小图并点击这个小图

94 阅读1分钟
import pyautogui
import cv2

def getBigImg():
    # 截取全屏幕图片并保存
    savedPath = "/Users/mac/Desktop/screenshot.png"
    pyautogui.screenshot().save(savedPath)
    # 读取全屏幕图片
    bigImg = cv2.imread(savedPath)
    return bigImg
 
def get_xy(imgFilePath, bigImg):

    # 读取小图模板
    img_terminal = cv2.imread(imgFilePath)
    # 获取小图模板的高度、宽度和通道数
    height, width, channel = img_terminal.shape
    # 在全屏幕图片中进行模板匹配
    result = cv2.matchTemplate(bigImg, img_terminal, cv2.TM_SQDIFF_NORMED)

    # 获取最小匹配位置的左上角坐标
    upper_left = cv2.minMaxLoc(result)[2]

    # 计算最小匹配位置的右下角坐标
    lower_right = (upper_left[0] + width, upper_left[1] + height)

    # 计算最小匹配位置的中心坐标
    avg = (
        int((upper_left[0] + lower_right[0]) / 2),
        int((upper_left[1] + lower_right[1]) / 2),
    )

    # 返回小图在全屏幕中的中心坐标
    return avg

def clickSmallImg(smallImgFilePath):
    avg = get_xy(smallImgFilePath, getBigImg())
    pyautogui.click(*avg, button="left")


# 获取小图的坐标并进行鼠标点击操作
smallImgFilePath = "/Users/mac/Desktop/Snipaste_2023-10-14_16-03-53.png"
clickSmallImg(smallImgFilePath)