OpenCV中的掩码类型错误

时间:2015-07-22 13:28:51

标签: 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)

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

包含的印刷语句回来是uint8。掩码的打印本身会打印出一个非空的numpy数组,其值为0和255.还有其他任何我想出错的想法吗?

1 个答案:

答案 0 :(得分:4)

Rookie错误:事实证明,我拍摄形状的源图像是彩色图像,这意味着source_img.shape()出现在(480, 640, 3)。因此,尽管然后正确设置了蒙版的类型,它仍然是一个3通道图像,当它需要是两个。

通过将掩码层初始化为:

来解决
mask = np.zeros(source_img.shape[:2], np.uint8)