【PyAutoGUI操作指南】05 屏幕截图与图像定位:截图+定位单个目标+定位全部目标+灰度匹配+像素匹配+获取屏幕截图中像素的RGB颜色
6 屏幕截图与图像定位
PyAutoGUI可以拍摄屏幕截图,将其保存到文件中,并在屏幕中定位图像。OSX使用操作系统附带的screencapture命令。Linux使用scrot命令,可以通过运行sudo-apt-get-install-scrot来安装该命令。
功能介绍:一个需要点击的按钮,并且想在屏幕上找到它。
6.1 屏幕截图
import pyautogui# 截取全屏 在1920 x 1080屏幕上,screenshot()函数大约需要100毫秒-不快但不慢。
im1 = pyautogui.screenshot()
# 截取全屏,并以图片保存
im2 = pyautogui.screenshot('my_screenshot.png')# 截取指定位置,传递要捕获的区域的左侧、顶部、宽度和高度的四个整数元组:
im = pyautogui.screenshot(region=(0,0, 300, 400))
6.2 定位单个目标
import pyautogui# ---------------------------------------------------------------
# 获取感兴趣区域的 (left, top, width, height)
button7location = pyautogui.locateOnScreen('looksLikeThis.png')
print(button7location)
print(button7location[0])
print(button7location.left)
# 计算感兴趣区域的中心点的xy坐标
button7point = pyautogui.center(button7location)
print(button7point)
print(button7point[0])
print(button7point.x)
# 点击感兴趣区域的中心点坐标
button7x, button7y = button7point
pyautogui.click(button7x, button7y)# ---------------------------------------------------------------
# 快速点击感兴趣区域
pyautogui.click('looksLikeThis.png')# ---------------------------------------------------------------
# 设置置信度 需要安装opencv
button7location = pyautogui.locateOnScreen('looksLikeThis.png', confidence=0.9)
print(button7location)
print(button7location[0])
print(button7location.left)# ---------------------------------------------------------------
# 获取感兴趣区域的中心点位置坐标,并且点击
x, y = pyautogui.locateCenterOnScreen('looksLikeThis.png')
pyautogui.click(x, y)
6.3 定位全部目标的位置
import pyautogui
# 这些“定位”功能相当昂贵;他们可以用整整一秒钟的时间跑。
for pos in pyautogui.locateAllOnScreen('someButton.png') print(pos)# 提高速度的最佳方法:传递一个区域参数(一个4整型元组(左、上、宽、高)),以仅搜索屏幕的较小区域,而不是全屏:
pyautogui.locateOnScreen('someButton.png', region=(0,0, 300, 400))
6.4 灰度匹配
import pyautoguibutton7location = pyautogui.locateOnScreen('looksLikeThis.png', grayscale=True)
print(button7location)
6.5 像素匹配(获取屏幕截图中像素的RGB颜色)
import pyautogui
# 获取屏幕截图中像素的RGB颜色方案①
im = pyautogui.screenshot()
color_RGB = im.getpixel((100, 200))
print(color_RGB) #(130, 135, 144)# 获取屏幕截图中像素的RGB颜色方案②
pix = pyautogui.pixel(100, 200)
print(pix) # RGB(red=130, green=135, blue=144)
print(pix[0]) # 130
print(pix.red) # 130# 如果只需要验证单个像素是否与给定像素匹配,请调用pixelMatchesColor()函数,将其表示的颜色的X坐标、Y坐标和RGB元组传递给它:
pyautogui.pixelMatchesColor(100, 200, (130, 135, 144)) # Truepyautogui.pixelMatchesColor(100, 200, (0, 0, 0)) # False# tolerance关键字参数指定红色、绿色和蓝色值在仍匹配时可以变化多少:
pyautogui.pixelMatchesColor(100, 200, (140, 125, 134)) # False
pyautogui.pixelMatchesColor(100, 200, (140, 125, 134), tolerance=10) # True
【PyAutoGUI操作指南】05 屏幕截图与图像定位:截图+定位单个目标+定位全部目标+灰度匹配+像素匹配+获取屏幕截图中像素的RGB颜色相关推荐
- Qt工作笔记-QGraphics框架中,给图像中的点连线【获取场景中的数据】【有坑】
程序运行截图如下: 这里面有一个坑,就是获取场景中的元素并不是根据图像中,从左往右,从上往下这样的获取. 而是根据加入常见的先后,进行的, 如下图: Line是在Ellipse前加载的,所以是这样的结 ...
- python识别图片文字、并返回文字坐标_PyAutoGui 图片识别+定位+截图函数文档
前言: 本章节有个非常重要的函数 locateCenterOnScreen! 如果你有一个图像文件,你可以在屏幕上直观地定位一些东西. 它直接返回x,y坐标点,返回值可以给click() PyAuto ...
- python获取屏幕文字_详解:四种方法教你对Python获取屏幕截图(PyQt , pyautogui)...
前言: 今天为大家带来的内容是详解:四种方法教你对Python获取屏幕截图(PyQt , pyautogui)本文具有不错的参考意义,希望能够帮助到大家! Python获取电脑截图有多种方式,具体如下 ...
- 5 获取窗口位置_详解:四种方法教你对Python获取屏幕截图(PyQt , pyautogui)
前言: 今天为大家带来的内容是详解:四种方法教你对Python获取屏幕截图(PyQt , pyautogui)本文具有不错的参考意义,希望能够帮助到大家! Python获取电脑截图有多种方式,具体如下 ...
- div css sprites精灵-CSS图像拼合 CSS贴图定位网页背景素材图片拼合定位布局技术教程
div css sprites精灵-CSS图像拼合 CSS贴图定位网页背景素材图片拼合定位布局技术教程篇与css sprites实例篇 css sprites拼合背景图片素材实现布局效果截图 一.什么 ...
- python截图黑屏_对Python获取屏幕截图的4种方法详解
Python获取电脑截图有多种方式,具体如下: PIL中的ImageGrab模块 windows API PyQt pyautogui PIL中的ImageGrab模块 import time imp ...
- 图像车牌识别(车牌定位与分割部分)
图像车牌识别(车牌定位与分割部分) 图像车牌识别关键就是要从图像中准确地定位出车牌的位置,并将车牌部分的图像分割出来. 本文设计了一个简易的车牌识别识别系统,现介绍其车牌定位和分割部分. 在设计中我采 ...
- pyautogui.locateOnScreen()找不到图像的办法
pyautogui.locateOnScreen识别不到图像的原因: 不仅需要下载PyAutoGUI包,还需要下载opencv-python包,猜想是识别图像用到了opencv-python包的一些功 ...
- Linux带箭头的截图软件,推荐一款Linux下功能强大全面的屏幕截图软件
原标题:推荐一款Linux下功能强大全面的屏幕截图软件 今天推荐大家使用Flameshot(火焰),因为它是我个人最喜欢屏幕截图软件.如果你不知道,Flameshot是一个Linux可用的开源截屏工具 ...
最新文章
- gitignore完整使用方法
- (转)【javascript基础】原型与原型链
- LeetCode 32最长有效括号(困难)
- PHP 与Python 读取大文件的区别
- Myecplise Tomcat 启动很慢
- PHP 显示信息到控制台console
- 怀旧服最新服务器塞卡尔,魔兽世界怀旧服:10个至今未开门的服务器!圣光服进度刚到20%!...
- GCC为什么不将a * a * a * a * a * a优化为(a * a * a)*(a * a * a)?
- Android ListView焦点事件冲突问题与解决
- 计算机科学与技术有几大类,计算机科学与技术类包括哪些专业
- 基于mpvue创建微信小程序项目
- 【分享】笔记本触控面板使用指南
- 图扑软件以轻量化建模构建智慧城市
- 视差:disparity与UV-视差:UV-disparity
- C语言课程设计日历题目
- 苹果弃用 3D Touch!
- 无法连接到宽带连接被远程计算机终止,无法连接到宽带连接?
- Java内存模型(JMM)详解
- 认识信道(零):天线的极化
- 佩伯尔幻像_幻像类型提高了编译时的安全性