2012-06-29 4 views
13

Предположим, у меня есть два бинарных изображения того же размера. Как найти пересечение двух двоичных изображений? Только пиксели одной и той же координаты (местоположения) на двух изображениях белого (серый - 255) будут давать белые пиксели на выходном изображении (пересечение).OpenCV - Пересечение двух двоичных изображений

+0

Вы можете использовать операторы '&' и '|', как описано в http://stackoverflow.com/questions/17961092/how-do-i-do-boolean-operation-on-mat-such-as- mat3-MAT1-MAT2 –

ответ

34

Вы можете использовать cvAnd или cv::bitwise_and на двух изображениях. Полученное изображение будет белым только там, где оба входных изображения белые.

EDIT: Вот результаты применения cv::bitwise_and, cv::bitwise_or и cv::bitwise_xor на бинарных изображений:

Эти два источника изображения:

image 1image 2

Вот результат применения cv::bitwise_and:

imgAnd

Вот результат применения cv::bitwise_or:

imgOr

Вот результат применения cv::bitwise_xor:

imgXor

1

Вот как сделать это в Python (с изображениями выше) :

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() 

Если вам необходимо установить OpenCV для Python, сэкономьте время, следуя these directions (установка исторически была довольно больной).