在OpenCV中显示图像时覆盖另一张图片

3
我有两张图片,想要将它们叠放在一起显示。其中一张是单通道图像,而第二张图像是RGB图像,但大部分区域是透明的。
这两张图像是在不同的函数中生成的。我知道如果要将它们叠放在一起显示,可以在调用cvShowImage()时使用相同的窗口名称,但当它们是从不同的函数中绘制时,这种方法不起作用。尝试这样做时,我使用了cvCvtcolor()将单通道的二进制图像转换为RGB格式,然后从另一个函数中显示第二张图像。但这并没有起作用。两张图像在转换后具有相同的尺寸、深度和通道数。
我想避免将一张图像传递到第二个函数中再进行绘制。因此,我正在寻找一种快速而简单的方法来显示这两张叠放的图像。
谢谢!
编辑: alt text

你是想要添加/混合两张图片吗?http://stackoverflow.com/questions/3459960/blending-two-images-by-opencv/3460287#3460287 - karlphillip
不完全是这样,我的第一张图片是显示斑点的二进制图像,而我的第二张图片包含这些斑点的边界框。所以我只想把它们字面上叠加在一起显示出来。我会编辑我的帖子以展示这两张图片。 - AtharvaI
3个回答

1

无法“叠加”图像。cvShowImage()从内存中显示单个图像。您需要将它们混合/组合在一起。有几种方法可以做到这一点。
您可以将一个复制到另一个的1或2个通道中,可以使用AND、OR或XOR等逻辑操作,也可以使用Add、Multiply和MultiplyScale等算术操作(这些操作将饱和大于255的值)。所有这些操作也可以使用可选的掩码图像(如您的blob图像)进行。
自然地,您可能希望将其放入第三个缓冲区,以免覆盖原始数据。


1

我认为这是不可能的。您需要创建一个新图像或修改现有图像。这里有一篇文章,展示了如何做到这一点:OpenCV中的透明图像叠加


0

谢谢。但我相信只有文本可以叠加在图像上。请查看标记答案以获取解决方案。谢谢。 - AtharvaI

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接