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

问题描述 投票:0回答:1

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

我想用这两个图像即。掩码和img使得我在掩码为255的位置创建一个具有原始img值的矩阵,并且在掩码为0的所有位置创建值-1。

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

maskedImg = cv2.bitwise_and(img, mask)

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

python opencv image-processing cv2
1个回答
2
投票

我不知道你的形象是什么类型的。默认值为np.uint8,因此您不能在结果上设置-1,它会下载到-1 + 256 = 255。也就是说,如果dtype是np.uint8,则不能将其设置为负值。

如果要设置为-1,则应更改dtype

#masked = cv2.bitwise_and(img, mask).astype(np.int32)
masked = np.int32(img)
masked[mask==0] = -1
© www.soinside.com 2019 - 2024. All rights reserved.