【问题标题】:overlaying images when displaying in OpenCV在 OpenCV 中显示时覆盖图像
【发布时间】:2011-01-28 17:19:48
【问题描述】:

我有两张图像要叠加显示。一个图像是单通道图像,第二个图像是 RGB 图像,但大部分区域是透明的。

这两个图像是如何在不同的函数中生成的。我知道只是将它们显示在彼此之上,我可以在调用cvShowImage() 时使用相同的窗口名称,但是当它们从不同的函数中绘制时这不起作用。尝试此操作时,我使用cvCvtcolor() 将二进制图像从单通道转换为 RGB,然后从另一个函数显示第二个图像。但这没有用。两张图片的尺寸、深度和通道数相同(转换后)。

我想避免将一个图像传递给第二个函数然后绘制它们。因此,我正在寻找一种快速的肮脏技巧来显示这两个重叠的图像。

谢谢

编辑:

【问题讨论】:

  • 您是否尝试添加/混合 2 个图像? stackoverflow.com/questions/3459960/…
  • 不完全是,我的第一张图像是显示斑点的二进制图像,我的第二张图像包含这些斑点的边界框。所以我只想从字面上显示它们。我将编辑我上面的帖子以显示这两个图像。

标签: image-processing opencv overlay overlap


【解决方案1】:

我认为这是不可能的。您必须创建新图像或修改现有图像。这里有一篇文章展示了如何做到这一点:Transparent image overlays in OpenCV

【讨论】:

    【解决方案2】:

    没有办法“叠加”图像。 cvShowImage() 显示内存中的单个图像。您需要将它们混合/组合在一起。有几种方法可以做到这一点。
    您可以将一个复制到另一个的 1 或 2 个通道中,可以使用 AND、OR 或 XOR 等逻辑运算,可以使用 Add、Multiply 和 MultiplyScale 等算术运算(这些运算将使大于 255 的值饱和)。所有这些也可以使用可选的蒙版图像(如您的 blob 图像)来完成。
    当然,您可能希望在第三个缓冲区中执行此操作,以免覆盖您的原件。

    【讨论】:

      【解决方案3】:

      【讨论】:

      • 谢谢。但我相信只有文本可以覆盖在图像上。查看解决方案的标记答案。谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多