我想用ImageGrab截取屏幕特定区域的截图,并将图像转换为numpy数组,以便用OpenCV进行分析。然而,我偶然发现了一个src数据类型17错误,当我更改抓取功能的参数时,我只能随机获取。因此,例如当参数为:(10,10,50,40)时,它打印出一个正常的numpy数组,然后可以使用opencv将其转换为灰度,但是使用其他参数,例如:(100,100,100,100)它不断给出src data type = 17 is not supported error
。当我尝试打印出numpy数组时,它也不显示数组,但只放在大小为0x0的内存中,例如:<PIL.Image.Image image mode=RGB size=0x0 at 0x532C570>
下面是代码的示例。感谢它,如果有人可以帮我解释为什么会发生这种情况,并且可能会建议修复它。
import cv2
import numpy as np
from PIL import ImageGrab
while True:
img = ImageGrab.grab(bbox=(10, 10, 50, 40))
img_np = np.array(img)
print img_np
#img_grayscaled = cv2.cvtColor(img_np, cv2.COLOR_BGR2GRAY)
答案 0 :(得分:1)
PIL的边界框是一个定义左,上,右和下像素坐标的4元组,见docs for getbbox
。所以(100, 100, 100, 100)
没有给出正确的图像(零高度和宽度)。