OpenCV - 两个二进制图像之间的交叉点

时间:2012-06-29 13:02:50

标签: opencv image-segmentation

假设我有两个相同大小的二进制图像。如何找到两个二进制图像之间的交集?只有两个图像上相同坐标(位置)的像素为白色(灰色 - 255)才会在输出图像(交叉点)上产生白色像素。

2 个答案:

答案 0 :(得分:41)

您可以在这两张图片上使用cvAndcv::bitwise_and。仅在输入图像均为白色的情况下,生成的图像将为白色。

编辑:以下是在二进制图片上应用cv::bitwise_andcv::bitwise_orcv::bitwise_xor的结果:

这是两个源图像:

image 1 image 2

以下是应用cv::bitwise_and的结果:

imgAnd

以下是应用cv::bitwise_or的结果:

imgOr

以下是应用cv::bitwise_xor的结果:

imgXor

答案 1 :(得分:3)

以下是如何在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节省时间(安装历来非常痛苦)。