OpenCV均值中的掩码类型错误

Lar*_*ark 4 python opencv

我正在尝试遮盖框架的某个区域,以便获得形状的均值。我的代码如下:

for h, cnt in enumerate(contours):
    mask = np.zeros(source_img.shape, np.uint8)
    cv2.drawContours(mask, [cnt], 0, 255, -1)
    print mask
    print mask.dtype
    mean = cv2.mean(source_img, mask=mask)
Run Code Online (Sandbox Code Playgroud)

但是,运行此代码时,我得到了error: (-215) mask.empty() || mask.type() == CV_8U in function mean

包含的打印语句回来了uint8。蒙版本身的打印会打印出一个非空的numpy数组,其值分别为0和255。关于我要去哪里的问题还有其他想法吗?

Lar*_*ark 5

新秀错误:事实证明,我采用的形状的源图像是彩色图像,这意味着要显示source_img.shape()出来(480, 640, 3)。因此,尽管随后正确设置了遮罩的类型,但当需要为两个时,它仍然是3通道图像。

通过将蒙版层初始化为:

mask = np.zeros(source_img.shape[:2], np.uint8)
Run Code Online (Sandbox Code Playgroud)