2017-04-04 6 views
1

J'essaie de comprendre comment fonctionne la fonction cv2.bitwise_and (src1, src2, mask). J'ai donc essayé ce code:bitwise_and comment ça marche?

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) 

De la documentation Je comprends que l'opération et fait si mask[I] pas égal à zéro. Mais je n'ai pas compris pourquoi.

Répondre

3

Je pense que vous avez la bonne compréhension, vous venez d'appeler bitwise_and faux. Utilisez

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

De the documentation, bitwise_and « s que les arguments obligatoires sont les deux images source.

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

Donner un troisième argument (mask_bin) sans autre information, il considérera par défaut comme son premier argument optionnel, dst, un tableau de sortie. Vous devez lui dire que vous voulez mask_bin être l'argument optionnel de masque.

Remplacer cette ligne donne [0,0,3], ce qui est ce à quoi vous devez vous attendre.

+0

C'était parfait! –

+0

oui, vous avez raison. Merci beaucoup –

+0

@MohammedAwney Comme il a résolu votre problème, vous pouvez accepter cette réponse. – Antonio