ImageGrab.grab(bbox)和Image.getpixel()一起使用
问题内容:
使用PIL.ImageGrab的抓取功能时,有一个名为bbox的参数,该参数指定应使用屏幕抓图的边框。当我想获取特定像素的值时,坐标应该是什么?例如:
im = ImageGrab.grab(bbox=(500, 500, 600, 700)
print(im.getpixel(510, 510))
print(im.getpixel(10, 10))
这两个陈述都给我一个错误。我在这里做错了什么?
问题答案:
您犯了两个错误:
- 由于您已指定边界框,因此生成的图像小于屏幕分辨率。边界框是一个
(left_x, top_y, right_x, bottom_y)
元组,因此使用值时(500, 500, 600, 700)
,图像的宽度为100像素,高度为200像素。
这就解释了为什么im.getpixel(510, 510)
不起作用-坐标510在图像之外。
- 该
getpixel
方法将坐标作为一个(x, y)
元组,而不是两个单独的参数。正确的语法是im.getpixel((10, 10))
。