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颜色相关推荐

  1. Qt工作笔记-QGraphics框架中,给图像中的点连线【获取场景中的数据】【有坑】

    程序运行截图如下: 这里面有一个坑,就是获取场景中的元素并不是根据图像中,从左往右,从上往下这样的获取. 而是根据加入常见的先后,进行的, 如下图: Line是在Ellipse前加载的,所以是这样的结 ...

  2. python识别图片文字、并返回文字坐标_PyAutoGui 图片识别+定位+截图函数文档

    前言: 本章节有个非常重要的函数 locateCenterOnScreen! 如果你有一个图像文件,你可以在屏幕上直观地定位一些东西. 它直接返回x,y坐标点,返回值可以给click() PyAuto ...

  3. python获取屏幕文字_详解:四种方法教你对Python获取屏幕截图(PyQt , pyautogui)...

    前言: 今天为大家带来的内容是详解:四种方法教你对Python获取屏幕截图(PyQt , pyautogui)本文具有不错的参考意义,希望能够帮助到大家! Python获取电脑截图有多种方式,具体如下 ...

  4. 5 获取窗口位置_详解:四种方法教你对Python获取屏幕截图(PyQt , pyautogui)

    前言: 今天为大家带来的内容是详解:四种方法教你对Python获取屏幕截图(PyQt , pyautogui)本文具有不错的参考意义,希望能够帮助到大家! Python获取电脑截图有多种方式,具体如下 ...

  5. div css sprites精灵-CSS图像拼合 CSS贴图定位网页背景素材图片拼合定位布局技术教程

    div css sprites精灵-CSS图像拼合 CSS贴图定位网页背景素材图片拼合定位布局技术教程篇与css sprites实例篇 css sprites拼合背景图片素材实现布局效果截图 一.什么 ...

  6. python截图黑屏_对Python获取屏幕截图的4种方法详解

    Python获取电脑截图有多种方式,具体如下: PIL中的ImageGrab模块 windows API PyQt pyautogui PIL中的ImageGrab模块 import time imp ...

  7. 图像车牌识别(车牌定位与分割部分)

    图像车牌识别(车牌定位与分割部分) 图像车牌识别关键就是要从图像中准确地定位出车牌的位置,并将车牌部分的图像分割出来. 本文设计了一个简易的车牌识别识别系统,现介绍其车牌定位和分割部分. 在设计中我采 ...

  8. pyautogui.locateOnScreen()找不到图像的办法

    pyautogui.locateOnScreen识别不到图像的原因: 不仅需要下载PyAutoGUI包,还需要下载opencv-python包,猜想是识别图像用到了opencv-python包的一些功 ...

  9. Linux带箭头的截图软件,推荐一款Linux下功能强大全面的屏幕截图软件

    原标题:推荐一款Linux下功能强大全面的屏幕截图软件 今天推荐大家使用Flameshot(火焰),因为它是我个人最喜欢屏幕截图软件.如果你不知道,Flameshot是一个Linux可用的开源截屏工具 ...

最新文章

  1. gitignore完整使用方法
  2. (转)【javascript基础】原型与原型链
  3. LeetCode 32最长有效括号(困难)
  4. PHP 与Python 读取大文件的区别
  5. Myecplise Tomcat 启动很慢
  6. PHP 显示信息到控制台console
  7. 怀旧服最新服务器塞卡尔,魔兽世界怀旧服:10个至今未开门的服务器!圣光服进度刚到20%!...
  8. GCC为什么不将a * a * a * a * a * a优化为(a * a * a)*(a * a * a)?
  9. Android ListView焦点事件冲突问题与解决
  10. 计算机科学与技术有几大类,计算机科学与技术类包括哪些专业
  11. 基于mpvue创建微信小程序项目
  12. 【分享】笔记本触控面板使用指南
  13. 图扑软件以轻量化建模构建智慧城市
  14. 视差:disparity与UV-视差:UV-disparity
  15. C语言课程设计日历题目
  16. 苹果弃用 3D Touch!
  17. 无法连接到宽带连接被远程计算机终止,无法连接到宽带连接?
  18. Java内存模型(JMM)详解
  19. 认识信道(零):天线的极化
  20. 佩伯尔幻像_幻像类型提高了编译时的安全性

热门文章

  1. android中clip的使用
  2. 如何将小米手机的备忘录内容导出到华为Nova3?
  3. 计算机网络---网络工程
  4. Faker被换下场,新赛季的T1还是曾经那个强劲SKT吗?
  5. 郑州轻工业大学OJ1024: 计算字母序号
  6. 杨辉三角(Pascal‘s Triangle)
  7. Android向SD卡写入文件
  8. 曼达洛人对机器人的评价_为什么曼达洛人如此厌恶机器人?硬核奶爸原来也有童年阴影...
  9. c++结构体案例,对英雄的结构体数据使用冒泡排序重新排名
  10. 数字化转型时代 百年品牌OKI是如何跟进的?