我有一个图片img。我还有一个值为255的掩码,我希望保留img的像素值在所有其他地方都是0。
我想使用这两个图片即。掩码和img,这样我在掩码为255的地方创建一个原始img值的矩阵,在掩码为0的所有地方创建值-1。
所以,到目前为止,我写过:
maskedImg = cv2.bitwise_and(img, mask)
但是maskedImg在掩码为0的所有位置都为0.如何使用快速按位运算在所有其他位置获取值-1而不是0?
答案 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