OpenCV - Intersection between two binary images
Asked Answered
D

2

22

Let's say I have two binary images of the same size. How do I find the intersection between the two binary images? Only pixels of the same coordinate (location) on the two images that are white (gray - 255) will give white pixels on the output image (intersection).

Disgrace answered 29/6, 2012 at 13:2 Comment(1)
You may use & and | operators, as described in #17961592Colossal
E
57

You can use cvAnd or cv::bitwise_and on the two images. The resulting image will be white only where both the input images are white.

EDIT: Here are the results of applying cv::bitwise_and, cv::bitwise_or and cv::bitwise_xor on binary images:

These are the two source images:

image 1 image 2

Here is the result of applying cv::bitwise_and:

imgAnd

Here is the result of applying cv::bitwise_or:

imgOr

Here is the result of applying cv::bitwise_xor:

imgXor

Elburr answered 29/6, 2012 at 13:7 Comment(0)
F
7

Here's how to do this in python (with the images above):

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

If you need to install OpenCV for Python, save time by following these directions (installation has historically been quite a pain).

Franchescafranchise answered 27/7, 2017 at 22:35 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.