【问题标题】:OpenCV : Add/merge/combine 'only part' of Image A to Image B [closed]OpenCV:将图像 A 的“仅部分”添加/合并/组合到图像 B [关闭]
【发布时间】:2016-01-23 22:16:16
【问题描述】:

我检查了一些已经回答的关于使用OpenCV 添加(合并/合并)两个图像的问题。但我的问题在这里有点不同。我想添加/合并/合并图像 A 的一部分到图像 B。考虑下面的例子:-

在这张照片中,Image A - 戴眼镜的家伙

Image B - 不戴眼镜的家伙(憨豆先生) 所以,我正在寻找的是一些algorithmOpenCV 中的函数,通过它我可以使Image B 具有Image A只有眼镜即合并部分将Image A 转换为Image B。)(另外,请不要 - 我不希望我的结果看起来像Image C 这里是两个图像的变形版本。我只想添加来自@ 的眼镜987654334@ 到Image B。休息一切都会像Image B 一样 非常感谢任何帮助:)

就我而言,编程语言并不重要。我可以使用任何语言 C++、Java、python、Ruby 等。 如果您仍然不理解我的问题,我可以再次解释。 期待一些好的解决方案。谢谢

【问题讨论】:

  • 您需要先分割眼镜。然后只需将copyTo 与分段掩码一起使用。
  • 感谢@Miki 的回复。是的,细分是一个不错的选择。但是,分割可能无法正常工作,如果我的图像 B 没有正确对齐或具有像这张图像一样的侧角 - 3.bp.blogspot.com/-imSsKoyz9Ss/VfpcPPp78aI/AAAAAAAAA1I/… 所以,我正在考虑更多的通用方法,比如重新基于图像 B 重新动态地重新绘制图像 B ' s 角度或对齐方式。这样的事情可能吗?
  • 要做到这一点,您需要眼镜和面部的 3D 模型
  • 我们可以从他们的 2D 版本重新创建图像 A 和 B 的 3D 模型吗?

标签: java python c++ opencv image-processing


【解决方案1】:

您的问题不是很清楚 - 您没有具体说明您对输入图像的了解。

假设您以某种方式确定了两个图像中要剪切的区域(这是困难的部分),那么它就变成了一个简单的合成过程。基本算法使用“遮罩”,即与原始图像大小相同的黑白图像,在第一个图像的(背景)区域保留白色,在其他地方保持黑色。您将第一张图像乘以遮罩,将第二张图像乘以遮罩的负值,然后将结果相加。

【讨论】:

  • 谢谢弗朗西索。如果两个图像的大小不同,在这种情况下,您的方法是否有效,或者我必须先将图像大小调整为相同大小,然后对其应用遮罩?
  • 如果两个图像(我们想要合并)的方向(或对齐)不同,3.bp.blogspot.com/-imSsKoyz9Ss/VfpcPPp78aI/AAAAAAAAA1I/ 喜欢这个和图像A上面,那么我怎样才能将眼镜与这张图片合并? Miki 说需要两个图像的 3D 模型,但是是否可以从它们的 2D 图像渲染 3D 图像?
  • 你的问题不再是 SO 问题了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多