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

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


person XterNalz    schedule 29.06.2012    source источник
comment
Вы можете использовать операторы & и |, как описано в stackoverflow.com/questions/17961092/   -  person Ruwanka Madhushan    schedule 15.07.2015


Ответы (2)


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

РЕДАКТИРОВАТЬ: Вот результаты применения cv::bitwise_and, cv::bitwise_or и cv::bitwise_xor для двоичных изображений:

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

изображение 1изображение 2

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

imgAnd

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

imgOr

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

imgXor

person Ove    schedule 29.06.2012

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

person zelusp    schedule 27.07.2017