【问题标题】:Opencv - Overlay image without cvAddWeightedOpencv - 没有 cvAddWeighted 的叠加图像
【发布时间】:2011-11-26 16:45:07
【问题描述】:

有很多教程展示了如何在 opencv 中混合两个图像:

但所有这些都是基于这个等式:

opencv blending http://opencv.itseez.com/_images/math/afeb868ed1632ace1fe886b5bfbb6fd933b742b8.png

这意味着我将通过平均两个图像来组合它们,因此我将在两个图像上失去强度。

例如,设 alpha = 0.5,f0(x) = 255,f1(x) = 0。应用这个方程后,结果图像 g(x) = 127。那不是我需要的。第一个图像应保持不变。并且透明度必须在第二个中应用。

我的问题是:

第一个图像 f0(x) 不应更改,并且应在第二个图像 f1(x) 覆盖第一个图像 f0(x) 时对其应用 alpha。

我不知道该怎么做。有什么帮助吗?

【问题讨论】:

标签: c++ image opencv


【解决方案1】:

很遗憾,OpenCV 不支持 alpha 通道。来自imread 文档:
请注意,在当前实现中,alpha 通道(如果有)会从输出图像中剥离。例如,如果flags > 0,则将 4 通道 RGBA 图像加载为 RGB。

请参阅this SO 帖子,了解使用 imagemagick 的可能解决方法。

希望对您有所帮助!

【讨论】:

  • 感谢@mevatron 将我指向 ImageMagick。答案是:composite -dissolve 50% meme1.png meme2.png result.png。也可以使用 Magick++ 在 C++ 中编写代码。
猜你喜欢
  • 2013-08-13
  • 1970-01-01
  • 2012-05-27
  • 2011-03-15
  • 1970-01-01
  • 2018-08-12
  • 1970-01-01
  • 1970-01-01
  • 2019-10-14
相关资源
最近更新 更多