OpenCV Python 不支持 src 数据类型 17 错误

src data type 17 not supported error with OpenCV Python

我想使用 ImageGrab 截取屏幕特定区域的屏幕截图,并将图像转换为 numpy 数组以使用 OpenCV 进行分析。但是,我偶然发现了一个 src 数据类型 17 错误,当我更改 grab 函数的参数时,我只是随机得到这个错误。因此,例如,当参数为:(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)

PIL 的边界框是一个 4 元组,定义了左、上、右和下像素坐标,请参见 docs for getbbox。所以 (100, 100, 100, 100) 没有给出正确的图像(高度和宽度为零)。