2011-01-05 133 views
3

我有两个图像要显示在彼此之上。一个图像是单通道图像,第二个图像是RGB图像,但大部分区域是透明的。在OpenCV中显示时叠加图像

如何在不同的功能中生成这两个图像。我知道只是将这些显示在对方的顶部,我可以在拨打cvShowImage()时使用相同的窗口名称,但是当它们从不同的功能绘制时,这不起作用。尝试此操作时,我使用cvCvtcolor()将单个通道的二进制图像转换为RGB,然后从另一个函数显示第二个图像。但是这不起作用。两幅图像的尺寸,深度和通道数量相同(转换后)。

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

谢谢

编辑: alt text

+0

版本是你想添加/混合2个图像? http://stackoverflow.com/questions/3459960/blending-two-images-by-opencv/3460287#3460287 – karlphillip 2011-01-05 15:06:01

+0

不完全,我的第一个图像是一个二进制图像显示斑点,而我的第二个图像包含这些斑点的边界框。所以我只想简单地将它们展示给对方。我将编辑我的上述帖子以显示两张图片。 – AtharvaI 2011-01-05 15:28:13

回答

1

我不认为这是可能的。你将不得不创建一个新的图像或修改现有的图像。这里说明了如何做到这一点的文章:Transparent image overlays in OpenCV

1

有没有办法为 “叠加” 图片。 cvShowImage()显示来自内存的单个图像。你需要将它们混合在一起。有几种方法可以做到这一点。
您可以将一个复制到另一个的一个或两个通道中,您可以使用AND,OR或XOR等逻辑运算,可以使用像Add,Multiply和MultiplyScale这样的算术运算(这些运算将使饱和值大于255)。所有这些也可以通过一个可选的蒙版图像来完成,比如你的斑点图像。
当然,您可能希望将其写入第三个缓冲区,以免覆盖您的原稿。