Diciamo che ho due immagini binarie della stessa dimensione. Come trovo l'intersezione tra le due immagini binarie? Solo i pixel della stessa coordinata (posizione) sulle due immagini che sono bianche (grigio - 255) danno dei pixel bianchi sull'immagine di uscita (intersezione).OpenCV - Intersezione tra due immagini binarie
13
A
risposta
34
È possibile utilizzare cvAnd o cv::bitwise_and sulle due immagini. L'immagine risultante sarà bianca solo dove entrambe le immagini di input sono bianche.
EDIT: Ecco i risultati dell'applicazione cv::bitwise_and, cv::bitwise_or e cv::bitwise_xor sulle immagini binarie:
Queste sono le immagini a due sorgenti:
Ecco il risultato dell'applicazione cv::bitwise_and:
Ecco il risultato dell'applicazione di cv::bitwise_or:
Ecco il risultato dell'applicazione di cv::bitwise_xor:
1
Ecco come fare questo in Python (con le immagini di cui sopra) :
import cv2
img1 = cv2.imread('black_top_right_triangle.png',0)
img2 = cv2.imread('black_bottom_right_triangle.png',0)
img_bwa = cv2.bitwise_and(img1,img2)
img_bwo = cv2.bitwise_or(img1,img2)
img_bwx = cv2.bitwise_xor(img1,img2)
cv2.imshow("Bitwise AND of Image 1 and 2", img_bwa)
cv2.imshow("Bitwise OR of Image 1 and 2", img_bwo)
cv2.imshow("Bitwise XOR of Image 1 and 2", img_bwx)
cv2.waitKey(0)
cv2.destroyAllWindows()
Se è necessario installare OpenCV
per Python
, risparmiare tempo seguendo these directions (l'installazione è stata storicamente un bel problema).
È possibile utilizzare gli operatori '&' e '|', come descritto in http://stackoverflow.com/questions/17961092/how-do-i-do-boolean-operation-on-mat-such-as- Mat3-mat1-mat2 –