bitwise_and 它是如何工作的?

bitwise_and how does it works?

我想了解函数 cv2.bitwise_and(src1,src2,mask) 的工作原理。所以我尝试了这段代码:

src1=np.array([1, 2, 3])

src1=np.uint8(src1)

mask=np.array([1,1,4])

mask=np.uint8(mask)

_, mask_bin= cv2.threshold(mask,3,1,cv2.THRESH_BINARY)

res=cv2.bitwise_and(src1,src1,mask_bin)

从文档中我了解到,如果 mask[I] 不等于零,将执行 and 操作。但是我不明白为什么。

我觉得你的理解是正确的,你只是把bitwise_and叫错了。使用

res=cv2.bitwise_and(src1,src1,mask=mask_bin)

the documentation开始,bitwise_and的唯一强制参数是两个源图像。

cv2.bitwise_and(src1, src2[, dst[, mask]]) → dst

给它第三个参数(mask_bin),没有其他信息,它默认将其视为第一个可选参数,即dst,一个输出数组。您需要告诉他您希望 mask_bin 成为掩码可选参数。

替换此行得到 [0,0,3],这是您应该期望的。