在OpenCV

时间:2017-06-09 10:32:44

标签: opencv image-processing blending

我如何进行合成:

image A (8x8 RGB) with top left corner at (0,0).  
image B (4x4 RGB) with top left corner at (6,6).

只需添加RGB值?

我想我需要先创建一个大小为(10,10)的(黑色)RGB画布,然后在各自的位置添加每个图像。

但是如何完成第二步?

现在如果偏移是(6.3,6.3)怎么办?有没有一种处理子像素叠加的技术?

编辑:cvSetImageROI也许?

1 个答案:

答案 0 :(得分:3)

为什么不使用addWeighted()来混合图像?您可以在较大图像中创建与较小图像大小相同的ROI,并在此处添加结果。

使用我所知的内置函数无法实现亚像素精度。如果您添加的图像仅部分覆盖了它,那么像素(6,6)的结果会是什么?你想要按重叠量加权吗?像素(7,7)怎么样?在这种情况下,将有四个像素交叉;每次加法是否应按重叠量加权?

如果你确实希望这些像素加权,那么定义你自己的方法就不会太难了,但是因为你有很多种情况会有点乏味:角落,边和内部会每个都有不同的权重。