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

nul*_*ptr 1 python python-imaging-library python-3.x

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

im = ImageGrab.grab(bbox=(500, 500, 600, 700)
print(im.getpixel(510, 510))
print(im.getpixel(10, 10))
Run Code Online (Sandbox Code Playgroud)

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

Ara*_*Fey 5

你犯了两个错误:

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

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

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