返回介绍

18.8 图像识别

发布于 2024-01-22 21:44:06 字数 1264 浏览 0 评论 0 收藏 0

但是,如果事先不知道应该点击哪里,怎么办?可以使用图像识别。向PyAutoGUI提供希望点击的图像,让它去弄清楚坐标。

例如,如果你以前获得了屏幕快照,截取了提交按钮的图像,保存为submit.png,那么 locateOnScreen() 函数将返回图像所在处的坐标。要了解 locateOnScreen()函数的工作方式,请获取屏幕上一小块区域的屏幕快照,保存该图像,并在交互式环境中输入以下内容,用你的屏幕快照文件名代替 'submit. png':

>>> import pyautogui
>>> pyautogui.locateOnScreen('submit.png')
(643, 745, 70, 29)

locateOnScreen() 函数返回4个整数的元组,是屏幕上首次发现该图像时左边的x坐标、顶边的y坐标、宽度以及高度。如果你用自己的屏幕快照,在你的计算机上尝试,那么返回值会和这里显示的不一样。

如果屏幕上找不到该图像,locateOnScreen() 函数将返回None。请注意要成功识别,屏幕上的图像必须与提供的图像完全匹配。即使只差一个像素,locateOn Screen() 函数也会返回None。

如果该图像在屏幕上能够找到多处,locateAllOnScreen() 函数将返回一个Generator对象。可以将它传递给list() ,返回一个4整数元组的列表。继续在交互式环境的例子中输入以下内容(用你自己的图像文件名取代 'submit.png'):

>>> list(pyautogui.locateAllOnScreen('submit.png'))
[(643, 745, 70, 29), (1007, 801, 70, 29)]

每个4整数元组代表了屏幕上的一个区域。如果图像只找到一次,返回的列表就只包含一个元组。

在得到图像所在屏幕区域的4整数元组后,就可以点击这个区域的中心。将元组传递给center() 函数,它将返回该区域中心的x、y坐标。在交互式环境中输入以下内容,用你自己的文件名、4整数元组和坐标对,来取代参数:

>>> pyautogui.locateOnScreen('submit.png')
(643, 745, 70, 29)
>>> pyautogui.center((643, 745, 70, 29))
(678, 759)
>>> pyautogui.click((678, 759))

用center() 得到中心坐标后,将click() 坐标传递给函数,就会点击屏幕上该区域的中心,这个区域匹配你传递给locateOnScreen() 函数的图像。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文