在OpenCV中显示时覆盖图像

时间:2011-01-05 14:55:35

标签: image-processing opencv overlay overlap

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

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

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

谢谢

编辑: alt text

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

答案 2 :(得分:0)