如何正确设置OpenCV python中的二进制掩码?

时间:2017-12-17 20:51:09

标签: python opencv image-processing cv2

我有一个图片img。我还有一个值为255的掩码,我希望保留img的像素值在所有其他地方都是0。

我想使用这两个图片即。掩码和img,这样我在掩码为255的地方创建一个原始img值的矩阵,在掩码为0的所有地方创建值-1。

所以,到目前为止,我写过:

maskedImg = cv2.bitwise_and(img, mask)

但是maskedImg在掩码为0的所有位置都为0.如何使用快速按位运算在所有其他位置获取值-1而不是0?

1 个答案:

答案 0 :(得分:2)

I don't know what is your image's dtype. Default is np.uint8, so you cann't set -1 on the result, it underflows to -1 + 256 = 255. That is to say, if the dtype is np.uint8, you cann't set it to negative value.

If you want to set to -1, you should change the dtype.

#masked = cv2.bitwise_and(img, mask).astype(np.int32)
masked = np.int32(img)
masked[mask==0] = -1