我正在尝试使用蒙版和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_8UCV_8S

您正在使用:

mask = mask.astype('int')

这意味着在枚举值中键入CV_32S或4。

解决方案:

假设您已完成np.uint8,则可以使用np.int8import numpy as np

关于python - OpenCV屏蔽图像-错误:(-215)(mtype == 0 || mtype == 1)&& _mask.sameSize(* psrc1)在函数cv::binary_op中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49970147/

10-12 23:09