18 使用 PyAutoGUI 进行桌面应用自动化之图像识别与操作

在上一篇教程中,我们探讨了使用 PyAutoGUI 实现的基本操作示例,了解了如何模拟鼠标和键盘操作来自动化桌面应用。现在,我们将进一步探讨如何利用 PyAutoGUI 的图像识别能力来实现更复杂的自动化操作。在本篇教程中,我们将学习如何通过图像识别来识别屏幕上的元素,并对其进行操作。

图像识别基础

PyAutoGUI 提供了一些实用的图像识别功能,使我们能够通过截图的方式识别出屏幕上的 GUI 元素。以下是几个重要的图像识别函数:

  • pyautogui.locateOnScreen(image):在当前屏幕中查找给定图像的位置,并返回其坐标。
  • pyautogui.locateCenterOnScreen(image):查找给定图像位置的中心坐标,非常适合用来点击。
  • pyautogui.click(x, y):根据给定的坐标点击屏幕。

图像准备

在开始之前,请确保你已经准备好用于图像识别的截图。可以使用操作系统的截图工具将你需要识别的按钮、图标或任何区域截取下来,并保存为 PNG 或 JPG 格式。这些截图将用于 PyAutoGUI 的图像识别。

示例1:按钮识别与点击

假设我们有一个应用程序界面,其中有一个需要点击的按钮。以下是实现图像识别并点击该按钮的代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import pyautogui
import time

# 等待 3 秒钟,让用户准备界面
time.sleep(3)

# 指定要识别的按钮图像路径
button_image = 'button.png'

# 寻找按钮在屏幕上的位置
button_location = pyautogui.locateOnScreen(button_image)

if button_location is not None:
# 获取按钮中心坐标
button_center = pyautogui.center(button_location)
# 点击按钮
pyautogui.click(button_center)
print('按钮被点击!')
else:
print('未找到按钮。')

解释

  1. 我们首先让程序等待 3 秒,以便用户准备好要操作的界面。
  2. 然后用 locateOnScreen 查找屏幕上的按钮。如果找到了按钮,获取其中心坐标,并使用 click 方法进行点击。
  3. 如果未能找到按钮,则输出提示。

示例2:多次操作

在某些场景中,您可能需要在应用程序中多次点击相同的图片。例如,您可能需要多次提交一个表单。以下是一个实现多次点击的示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import pyautogui
import time

# 等待 3 秒钟
time.sleep(3)

# 指定按钮图像路径
button_image = 'submit_button.png'

# 循环执行点击操作
for i in range(5):
button_location = pyautogui.locateOnScreen(button_image)
if button_location is not None:
button_center = pyautogui.center(button_location)
pyautogui.click(button_center)
print(f'第 {i + 1} 次点击按钮。')
time.sleep(1) # 等待 1 秒,避免点击过快
else:
print('未找到按钮。')
break

注意事项

  1. 图像质量:确保用来识别的图像清晰可见,最好与目标应用中显示的元素一致。
  2. 屏幕分辨率:不同的屏幕分辨率和缩放设置可能会影响图像识别效果。如果使用了不同设备进行截图或运行程序,可能会遇到识别失败的问题。
  3. 延迟设置:在连续操作时,可以添加 time.sleep() 来防止操作过快,确保程序稳定。

总结

通过本篇教程,我们学习了如何利用 PyAutoGUI 的图像识别功能来实现复杂的桌面应用自动化操作。我们可以识别并点击屏幕上的元素,从而拓展了自动化的可能性。

在下一篇教程中,我们将分析一个实际案例,具体演示如何自动化登录操作。请期待!

18 使用 PyAutoGUI 进行桌面应用自动化之图像识别与操作

https://zglg.work/app-python-auto/18/

作者

IT教程网(郭震)

发布于

2024-08-11

更新于

2024-08-11

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论