如何使用OpenCv从图像中“切出”轮廓?

时间:2019-02-04 19:54:45

标签: c++ image opencv computer-vision

我有图像A,图像B和蒙版M,它们的尺寸都相同。

我要在图像A上叠加图像B。但是,图像A中的某些区域应保持相同。这些区域已经在蒙版内部被标识,因此所需要做的只是将蒙版轮廓内部的图像B中的所有相应像素设置为透明。

换句话说,通过在遮罩中使用findContours,我知道需要从图像B中删除的区域的轮廓,但是我不知道内部点。

有人知道是否可以做上述事情?

编辑: 使用cv:FILLED和drawContours用单一颜色填充这些区域,然后仅复制具有这些颜色的像素。

1 个答案:

答案 0 :(得分:0)

这类似于this question。使用此功能,您可以在假设您具有二进制掩码的情况下获取结果图像:

def cmb(foreground,background,mask):
    result = np.zeros_like(foreground)
    result[mask] = foreground[mask]
    inv_mask = np.logical_not(mask)
    result[inv_mask] = background[inv_mask]
    return result