c++ - 如何使用 OpenCv "cut"从图像中提取轮廓?

标签 c++ image opencv computer-vision

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

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

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

有谁知道是否可以执行上述操作?

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

最佳答案

这类似于 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

关于c++ - 如何使用 OpenCv "cut"从图像中提取轮廓?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54523424/

相关文章:

android - 使用 Picasso 从内部存储加载图像

html - 宽度为 100% 的渐变覆盖并绑定(bind)到宽度为 50% 且最大高度为 90% 的图像

opencv - 有没有办法在opencv中检测近矩形?

c++ - 尽管存在符号链接(symbolic link),ld 仍无法加载库

c++ - 带有 aerospike_query_foreach 的回调函数给出构建错误

c++ - Qt ComboBox + 搜索 XML + 将数据从 XML 打印到 GUI

android - 将旋转的 drawable 设置为 TextView 的 drawableLeft

c++ - 在image-OpenCV和C++中添加高斯噪声然后去噪?

actionscript - 将其他 Haarcascade xml 与 Marilena 一起使用

c++ - 结构原型(prototype)?