我想了解函数 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]
,这是您应该期望的。
关于python-2.7 - bitwise_and 它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43202067/