- 内容提要
- 作者简介
- 技术评审者简介
- 致谢
- 译者序 会编程的人不一样
- 前言
- 本书的读者对象
- 编码规范
- 什么是编程
- 本书简介
- 下载和安装 Python
- 启动 IDLE
- 如何寻求帮助
- 聪明地提出编程问题
- 小结
- 第一部分 Python 编程基础
- 第1章 Python 基础
- 第2章 控制流
- 第3章 函数
- 第4章 列表
- 第5章 字典和结构化数据
- 第6章 字符串操作
- 第二部分 自动化任务
- 第7章 模式匹配与正则表达式
- 第8章 读写文件
- 第9章 组织文件
- 第10章 调试
- 第11章 从 Web 抓取信息
- 第12章 处理 Excel 电子表格
- 第13章 处理 PDF 和 Word 文档
- 第14章 处理 CSV 文件和 JSON 数据
- 第15章 保持时间、计划任务和启动程序
- 第16章 发送电子邮件和短信
- 第17章 操作图像
- 第18章 用 GUI 自动化控制键盘和鼠标
- 附录A 安装第三方模块
- 附录B 运行程序
- 附录C 习题答案
18.8 图像识别
但是,如果事先不知道应该点击哪里,怎么办?可以使用图像识别。向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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论