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]
,这是您应该期望的。
我想了解函数 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]
,这是您应该期望的。