平均两幅带掩码的图像
Averaging of two images with mask
我有两张这样的图片:
我创建了两个蒙版,显示了每个图像在场景中的位置。
我创建了显示两个图像交集的蒙版。
我用
cv::bitwise_and(mask_left, mask_right, mask_intersection);
我想将两张图片加在一起。 mask_intersection
的像素是白色的,我想在两个图像上使用像素的平均值。这是结果,我只是将一张图片添加到另一张图片上。问题是锐利的边界,我想通过仅在 mask_intersection
.
上对两个图像进行平均来解决这个问题
我不知道如何用最简单的方法解决这个问题。
您正在寻找的过程称为 blending,您可以使用 cv::addWeighted()
来实现它,然后只需将结果乘以掩码以切断您不需要的图像区域不想混合。
为了对蒙版相交的两个图像进行平均,您可以使用 copyTo
。
假设您有 maskIntersection
、image1
、image2
和 finalImage
,代码将类似于:
((image1 + image2) * 0.5).copyTo(finalImage, maskIntersection)
尽管这回答了您对两幅图像求平均的问题,但我认为它不会提供很好的结果。将两个图像混合在一起通常是一个更复杂的过程。查看 this class 以快速了解所需内容。
我有两张这样的图片:
我创建了两个蒙版,显示了每个图像在场景中的位置。
我创建了显示两个图像交集的蒙版。
我用
cv::bitwise_and(mask_left, mask_right, mask_intersection);
我想将两张图片加在一起。 mask_intersection
的像素是白色的,我想在两个图像上使用像素的平均值。这是结果,我只是将一张图片添加到另一张图片上。问题是锐利的边界,我想通过仅在 mask_intersection
.
我不知道如何用最简单的方法解决这个问题。
您正在寻找的过程称为 blending,您可以使用 cv::addWeighted()
来实现它,然后只需将结果乘以掩码以切断您不需要的图像区域不想混合。
为了对蒙版相交的两个图像进行平均,您可以使用 copyTo
。
假设您有 maskIntersection
、image1
、image2
和 finalImage
,代码将类似于:
((image1 + image2) * 0.5).copyTo(finalImage, maskIntersection)
尽管这回答了您对两幅图像求平均的问题,但我认为它不会提供很好的结果。将两个图像混合在一起通常是一个更复杂的过程。查看 this class 以快速了解所需内容。