OpenCV - пересечение двух двоичных изображений

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

Ответы

Ответ 1

Вы можете использовать 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

Ответ 2

Здесь, как это сделать в 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, сэкономьте время, следуя этим указаниям (установка исторически была довольно большой).