我正在尝试使用蒙版和OpenCV的bitwise_and从图像中减去背景。但是,出现以下错误:
我的代码如下所示:
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 Error: error: (-215) (mtype == CV_8U || mtype == CV_8S) && _mask.sameSize(*psrc1) in function cv::binary_op)的一个问题,该问题解决了相同的错误,表明存在潜在的形状不匹配的问题。但是,同时检查我的面具和图像的形状,在我看来它们是否匹配,从而产生:
mask.shape
OUT: (100, 83)
img.shape
OUT: (100, 83, 3)
我正在使用Python v3和OpenCV v2
最佳答案
问题不在于形状不匹配...在断言的第一部分中失败了:
它说掩码的类型(mtype
)应该为0或1,即分别为CV_8U
和CV_8S
。
您正在使用:
mask = mask.astype('int')
这意味着在枚举值中键入
CV_32S
或4。解决方案:
假设您已完成
np.uint8
,则可以使用np.int8
或import numpy as np
关于python - OpenCV屏蔽图像-错误:(-215)(mtype == 0 || mtype == 1)&& _mask.sameSize(* psrc1)在函数cv::binary_op中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49970147/