您的位置:

pyautogui识别图像的全面介绍

一、图像识别概述

图像识别是通过计算机对数字图像进行分析处理,将像素点转换成有意义的信息,进而实现对目标物体的自动识别,其被广泛应用于股票识别、人脸识别、动物识别等领域中。pyautogui是一款基于python的图像处理库,其中识别图像是其重要的功能之一。

二、pyautogui中图像识别的应用场景

pyautogui的图像识别功能被广泛应用于企业自动化、游戏辅助等领域。

企业自动化:自动化测试之类的场景需要图片匹配和位置确认,这时pyautogui的图像识别功能就可以帮忙完成任务。例如,在写测试脚本时,可以使用pyautogui识别图片来判断是否达到了预期的状态。

游戏辅助:在游戏中,一些小游戏会弹出,但是这些游戏不是我们来玩的,而是需要机器来玩。这时就需要用到pyautogui来进行图像识别与控制。

三、pyautogui中基本的图像识别与匹配函数

在使用pyautogui进行图像识别时,最常用的函数是locateOnScreen和locateCenterOnScreen。

import pyautogui
# locateOnScreen可以找到screen的图片,返回相对于屏幕左上角的位置
location = pyautogui.locateOnScreen('example.png')
# locateCenterOnScreen会返回要搜索的图像的中心点坐标
center = pyautogui.locateCenterOnScreen('example.png')

除此之外,还有其他函数用于匹配图像,比如find,find_all,locate,locateAll。

四、pyautogui中的图像识别高级应用

1.图像缩放比例问题

在使用pyautogui识别图像时,有时候会遇到缩放比例问题。这种情况可以使用函数中的region参数进行解决,将图片固定位置,避免被缩放。

# 先确定定位区域,然后将图像匹配到该区域中,状态栏被截掉。
target_location = pyautogui.locateOnScreen('window.png', region=(0, 0, 500, 500))
# 对于每一个意图匹配的区域通过缩放和滚动取到对应的相对位置
specific_region = (target_location[0], target_location[1], target_location[0] + 500, target_location[1] + 500)
pyautogui.scroll(-400)
print(pyautogui.locateOnScreen('window.png', region=specific_region))

2.使用pyautogui实现模拟鼠标和键盘事件

pyautogui的图像识别功能不仅可以用于识别图像,还可用于模拟鼠标和键盘事件。例如,用程序解锁桌面:

import pyautogui
auth_image = None
while True:
    auth_image = pyautogui.locateCenterOnScreen('lock.png')
    if auth_image is not None:
        break
pyautogui.click(auth_image) # 点击锁屏图片
pyautogui.sleep(3) # 等待屏幕锁住
pyautogui.typewrite('password') # 输入桌面密码
pyautogui.press('enter') # 模拟按下回车键

3.使用pyautogui实现自动登录

通过识别图片的方式来实现自动登录,效果比OCR识别文字要好,识别率也更高。

import pyautogui
def auto_login(password):
    while True:
        # 匹配登录按钮位置,不存在则跳过
        login_image = pyautogui.locateOnScreen('login.png', confidence=0.8)
        if login_image is None:
            continue
        # 点击登录按钮
        pyautogui.click(login_image)
        # 匹配是否弹出输入密码界面,不存在则跳过
        password_image = pyautogui.locateOnScreen('password.png', confidence=0.8)
        if password_image is None:
            continue
        # 识别并输入密码,敲击登录
        pyautogui.typewrite(password, interval=0.1)
        pyautogui.press('enter')
        break
auto_login('password')

五、pyautogui图像识别的局限

pyautogui识别速度相对较慢,而且每次图像识别需要对屏幕进行一次截图,所以不能快速地进行大规模的图片搜索工作。同时,由于识别是通过比较像素点进行的,所以在像素点相似的情况下容易误判或者漏判。

六、结语

总结来说,pyautogui图像识别是一款非常实用的图像操作库,可以进行多方面的图像相关操作,极大地提高自动化测试和游戏辅助的效率,但是在实际应用中需要注意图像识别的准确率和速度问题。