当前位置: 首页 > 面试题库 >

如何使用ImageGrab.grab()。load()函数或任何其他函数获取像素更新?

督翰学
2023-03-14
问题内容

我一直在尝试检查屏幕上的像素是否正在更改。我需要做什么?

我上网已经很长时间了,没有成功。我对网络上提供的代码进行了实验,发现我的代码仅从运行代码时打开的屏幕中提供数据。即,如果在运行代码时屏幕为白色,即使屏幕颜色已经更改,它将从白色屏幕读取像素。

from PIL import ImageGrab
px=ImageGrab.grab().load()
m=px[613,296]
print(m)
while 1:
    if m!=px[613,296]:
        m=px[613,296]
        print(m)

我运行了代码并开始播放了一个视频,我期望值会不断变化,但是我得到的只是 (255,255,255) (空闲的白色屏幕),我也尝试手动更改屏幕。

我尝试在没有控制台的情况下运行代码,并在文本文件中没有while循环的情况下打印输出,但我得到了正确的值,但是我需要完成的任务需要多次运行代码以检查像素是否更新。我应该如何做到这一点?


问题答案:

这对我有用:

#!/usr/bin/env python3

from PIL import ImageGrab

while True:
   px=ImageGrab.grab().load()
   m=px[613,296]
   print(m)

我认为如果只抓取一个像素会更快一些,尽管可以通过指定这样的边界框来抓取一个像素:

#!/usr/bin/env python3

from PIL import ImageGrab

while True:
   screen=ImageGrab.grab(bbox=(613,296,614,297))
   px = screen.load()
   m=px[0,0]
   print(m,screen.size)


 类似资料:
  • 问题内容: 我有一个汇总函数,按(colA)进行分组。它从一组列(列B)中选择最大值,但我也想从同一行中的列(列C)中返回另一个值。但是,如果将3行分组,则从C列中选择第一个值,而不是最大值(MAX(colB))的列。 问题答案: 您将要使用一个子查询,该子查询将按每个子查询获取,然后将该值重新连接到表中,以返回与该子查询的值匹配的其余列: 参见带有演示的SQL Fiddle

  • 到目前为止,我们已经讨论了许多类型的Haskell函数,并使用了不同的方式来调用这些函数。在本章中,将学习一些可以在Haskell中轻松使用的基本函数,而无需导入任何特殊的类。这些函数大多数都是其他高阶功能的一部分。 1. head函数 Head函数适用于列表。它返回输入参数的第一个,参数基本上是一个列表。在下面的示例中,我们传递一个包含个值的列表,并使用函数返回列表的第一个元素。 示例代码: 执

  • 3.1.5 其他函数 在发布实现时,一般会循环发布消息,循环的判断条件一般由节点状态来控制,C++中可以通过 ros::ok() 来判断节点状态是否正常,而 python 中则通过 rospy.is_shutdown() 来实现判断,导致节点退出的原因主要有如下几种: 节点接收到了关闭信息,比如常用的 ctrl + c 快捷键就是关闭节点的信号; 同名节点启动,导致现有节点退出; 程序中的其他部分

  • 12.9.1. 位函数 12.9.2. 加密函数 12.9.3. 信息函数 12.9.4. 其他函数 12.9.1. 位函数 对于比特运算,MySQL 使用 BIGINT (64比特)算法,因此这些操作符的最大范围是 64 比特。 | Bitwise OR: mysql> SELECT 29 | 15; -> 31 其结果为一个64比特无符号整数。 & Bitwise AND: mysql> SE

  • 我有多个云函数使用一个值,基本上是这样的: 问题是我想要更改页脚内容(由返回),但为了这样做(就我所研究的),我首先必须在代码中更改它,然后部署使用的每个云函数(和),这样页脚在每种类型的电子邮件上看起来都是一样的。 当然,我可以使用同时部署所有函数,但是我们曾经是多个开发人员,我们中的一些人将函数更新到我们不知道index.js中哪些函数与GCP中的相同(大约20个函数),我必须检查每一个函数,

  • 问题内容: 我觉得我应该知道这一点,但我一直无法弄清楚…… 我想从内部获取一个方法的名称(恰好是一个集成测试),以便它可以打印出一些诊断文本。当然,我可以将方法的名称硬编码在字符串中,但是如果可能的话,我想使测试更加干燥。 问题答案: 涉及通过诸如此类进行内省的答案是合理的。但是根据您的情况,可能还有另一种选择: 如果您的集成测试是使用unittest模块编写的,则可以在TestCase中使用。