OpenCV遮罩图像 - 错误: (-215) (mtype == 0 || mtype == 1) && _mask.sameSize(*psrc1) 在函数cv::binary_op中

5
我正在尝试使用掩码和OpenCV的bitwise_and从图像中减去背景。但是,我遇到了以下错误:
error: C:\ci\opencv_1512684736357\work\modules\core\src\arithm.cpp:241: error: (-215) (mtype == 0 || mtype == 1) && _mask.sameSize(*psrc1) in function cv::binary_op 我的代码如下:
mask = get_mask() #function that returns a mask (boolean)

#conversion of the mask
mask = mask.astype('int')
mask[mask == 0] = 255
mask[mask == 1] = 0

fg_masked = cv2.bitwise_and(img, img, mask=mask)

在StackOverflow上有一个问题(OpenCV Python错误:错误:(-215)(mtype == CV_8U || mtype == CV_8S)&& _mask.sameSize (* psrc1)在函数cv :: binary_op中),它涉及到潜在的形状不匹配问题。然而,我检查了我的掩模和图像的形状,发现它们是匹配的,结果如下:
mask.shape
OUT: (100, 83)

img.shape
OUT: (100, 83, 3)

我正在使用Python v3和OpenCV v2

1个回答

10

问题不是形状不匹配,而是在断言的第一部分失败:

  

mtype == 0 || mtype == 1

它表示掩码(mtype)的类型应该是0或1,即CV_8UCV_8S

您正在使用:

mask = mask.astype('int')

这意味着类型为CV_32S或枚举值中的4。

解决方案:

假设您已经执行了import numpy as np,您可以使用np.uint8np.int8


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接