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

问题描述 投票:16回答:3

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

opencv image-segmentation
3个回答
47
投票

您可以在两个图像上使用cvAndcv::bitwise_and。仅当两个输入图像均为白色时,结果图像才会为白色。

编辑:这是在二进制图像上应用cv::bitwise_andcv::bitwise_orcv::bitwise_xor的结果:

这是两个源图像:

“图像1” ”图片2“

这里是应用cv::bitwise_and的结果:

“

这里是应用cv::bitwise_or的结果:

“

这里是应用cv::bitwise_xor的结果:

“


5
投票

以下是在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来节省时间(安装历来是一件很痛苦的事情。


0
投票

对于现实图像,计算时间不是很大(或不可能)吗?

© www.soinside.com 2019 - 2024. All rights reserved.