python - ImageGrab.grab(bbox) 和 Image.getpixel() 一起使用

标签 python python-3.x python-imaging-library

使用 PIL.ImageGrab 中的抓取函数时,有一个名为 bbox 的参数,它指定应获取屏幕抓取的边界框。当我想获取特定像素的值时,坐标应该是什么? 例如:

im = ImageGrab.grab(bbox=(500, 500, 600, 700)
print(im.getpixel(510, 510))
print(im.getpixel(10, 10))

这两个语句都给我一个错误。我在这里做错了什么?

最佳答案

你犯了两个错误:

  1. 由于您指定了边界框,因此生成的图像小于屏幕分辨率。边界框是一个 (left_x, top_y, right_x, Bottom_y) 元组,因此对于值 (500, 500, 600, 700),图像的宽度为100 像素,高度 200 像素。

    这解释了为什么 im.getpixel(510, 510) 不起作用 - 坐标 510 位于图像之外。

  2. getpixel method将坐标视为 (x, y) 元组,而不是两个单独的参数。正确的语法是 im.getpixel((10, 10))

关于python - ImageGrab.grab(bbox) 和 Image.getpixel() 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49479552/

相关文章:

python - 在python中转换为阿拉伯文文本

python - 无法从 Linux 机器通过 python 连接 SQL 服务器

python - 如何将 pandas 数据框中存在的列中的单词替换为同一列中的另一个单词?

python-3.x - py4JJava 错误 - 使用 select 语句时出错

Python 图像库保存函数语法

python - Django:更改图像大小并上传到 S3

Python - 在 csv 文件中显示具有重复值的行

python - 为什么这在 Python 中不可能?

python - 交换列表中的最大值和最小值

python - 在我的代码中遇到错误,但我无法确定原因。 (getpixel() 接受 2 个位置参数,但给出了 3 个)