Python的pyautogui库(图片操作篇locateOnScreen)

本文介绍了使用PyAutoGUI进行屏幕匹配的方法,包括指定搜索范围、灰度匹配及模糊查询等高级技巧,帮助读者提高自动化任务的准确性和效率。

第一篇为鼠标键盘操作https://blog.csdn.net/m0_61741706/article/details/126898352?spm=1001.2014.3001.5501

 

locateOnScreen中有region用来指定想要匹配的图片在屏幕哪个范围,grayscale可以实现灰度匹配和confidence的值决定精度

1.指定范围查询region设置在屏幕哪个区域匹配图片

"""
region指定范围:
在locateOnScreen函数中加入region参数,可以控制找图范围,从而提高找图效率。

region(x,y,width,height),其中x,y为范围左上角坐标,width,height为范围的宽和高
"""
help_pos = pyautogui.locateOnScreen("img/ai.png",region=(x,y,width,height))#找到png图片  region中的参数为xy起始点,宽度和高度
goto_pos = pyautogui.center(help_pos)#找到传回图片的中心点,并传回坐标
pyautogui.moveTo(goto_pos,duration=1)#移动鼠标
pyautogui.click()#点击传回的坐标

2.grayscale可以实现灰度匹配

在pyautogui.locateOnScreen()函数中加入grayscale=True,就可以实现灰度匹配
"""
        grayscale灰度匹配
        在pyautogui.locateOnScreen()函数中加入grayscale=True,就可以实现灰度匹配
"""
help_pos = pyautogui.locateOnScreen("img/ai.png", grayscale=True)#找到png图片  region中的参数为xy起始点,宽度和高度
goto_pos = pyautogui.center(help_pos)#找到传回图片的中心点,并传回坐标

3.模糊查询confidence的值决定精度,数值是0到1,数值越小,精度越低

"""
        模糊查询
        在pyautogui.locateOnScreen()函数中加入confidence参数,当confidence的值决定精度
"""
help_pos = pyautogui.locateOnScreen("img/ai.png",confidence=0.7, grayscale=True)
goto_pos = pyautogui.center(help_pos)#找到传回图片的中心点,并传回坐标

<think>嗯,用户问的是pyautogui.locateOnScreen函数的返回类型。我需要先回忆一下这个函数的用法和相关文档。根据之前的引用内容,用户提到当找不到图片时,这个函数可能报错而不是返回None,而有些情况下又返回None。看起来返回类型可能是一个元组,或者None,或者抛出异常。首先,我应该查阅官方文档或者可靠的资料确认返回类型。根据经验,pyautogui的定位函数通常返回一个包含位置和尺寸的元组,比如(left,top,width,height),如果找不到则返回None。但用户提到的引用[2]指出在某些情况下会报错,这可能是因为版本差异或者参数设置的问题。比如,可能启用了某种异常处理机制,或者confidence参数设置不当导致行为变化。另外,引用[3]提到confidence参数,默认是1,可能导致识别失败返回None,但用户遇到的是报错。这说明可能在特定环境下,函数的行为有所不同。需要确认不同参数下的返回类型是否一致。然后,我应该检查用户的问题是否涉及参数的影响。比如,如果使用了confidence参数,是否会影响返回类型?根据文档,添加confidence参数可能需要安装OpenCV的版本,此时返回类型可能还是同样的结构,只是内部处理方式不同。还需要考虑异常处理的情况。用户可能没有使用try-except块,导致函数在找不到图片时抛出异常而不是返回None。因此,返回类型可能正常情况下是元组,找不到时可能根据配置返回None或抛出异常。 总结来说,正确的返回类型应该是当找到图片时返回四整数元组(left,top,width,height),找不到时根据参数和版本可能返回None或抛出异常。需要向用户说明这一点,并建议处理这两种情况,比如使用try-except块或检查返回值是否为None。</think>### pyautogui.locateOnScreen() 返回类型说明 `pyautogui.locateOnScreen()` 的返回类型取决于是否找到屏幕上的目标图像: 1. **找到图像时**:返回一个包含位置和尺寸的四整数元组,格式为 $$(left, top, width, height)$$,例如 `(100, 200, 50, 30)` 表示左上角坐标为 (100,200)、宽50像素、高30像素的矩形区域[^1][^3]。 2. **未找到图像时**: - 默认行为可能因版本或参数配置不同:可能返回 `None`,也可能抛出 `ImageNotFoundException` 异常[^2][^3]。 - 若使用 `confidence` 参数(需安装 `opencv-python` ),未找到时通常会返回 `None`[^3]。 #### 示例代码 ```python from pyautogui import locateOnScreen # 基础用法 position = locateOnScreen('button.png') if position: print(f"找到位置:{position}") else: print("未找到图像") # 防止报错的推荐写法 try: position = locateOnScreen('button.png', confidence=0.8) print(f"找到位置:{position}") except Exception as e: print(f"未找到图像,错误:{e}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柒翼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值