Opencv调整图像忽略某些区域

时间:2016-06-29 12:59:05

标签: c++ opencv image-processing image-resizing

有没有办法在opencv中调整图像大小而忽略mask指定的某些区域?

例如我有带黑洞的图像,我不想在插值过程中使用这些孔。

我可以使用resizeINTER_NEAREST标志,或者我可以找到这些洞来构建一个掩码,然后通过这个掩码将结果图像中的值设置为0,但这些不是优雅的解决方案。

这是一个示例,但是孔可以更大

enter image description here

1 个答案:

答案 0 :(得分:0)

这样做的正确方法是先用一些技术填充黑洞,使图像看起来好像从来没有洞。

你的目标应该是在孔之间产生平滑的过渡,最大限度地减少任何边缘的形成。然后你可以进行缩放。您现在可以尝试扩张或Alpha混合,最后缩放输出图像以查看结果是否符合预期。

创建图像副本(以保留孔区域)并填充复制图像中的孔。

在孔区域应用Opencv Inpaint,然后将填充的图像调整为所需大小。让这个形象成为我。

此外,将原始图像调整为所需大小,以便知道图像I中孔的位置。

现在,如果它们位于孔区域,您可以将I中的像素标记为黑色。