OpenCV如何用背景替换切出的对象

OpenCV how to replace cut out object with background

我有两张图片,一张包含盒子,另一张没有。由于相机不在同一位置并且稍微平移,因此两张照片之间存在较小的垂直差异。我想把盒子剪下来,用另一张图片的信息替换掉那个洞。

我想达到这样的效果(来自计算机视觉课程的幻灯片)

想过用cv2.createBackgroundSubtractorMOG2()的方法,但是好像只有2张图片不行

由于差异,简单地从另一张图片中减去图片也不起作用。 该课程建议使用 RANSAC 来计算两张图片之间最可能的关系,并减去变化很大的区域。但是我该如何真正填补这些漏洞呢?

非常感谢!!

你可以试试这个库来解决背景减法问题。 https://github.com/andrewssobral/bgslibrary

有 python 个此工具的包装器。

如果您仅使用一对图像(或仅使用几张图像),图像拼接方法优于背景减法。

步骤是:

  1. 计算两个图像之间的单应性。
  2. 扭曲第二张图像以与第二张图像重叠。
  3. 用扭曲图像中的像素替换人的区域。

This link 显示图像拼接的基本示例。如果两个图像的不同位置都有人,您将需要额外的工作,否则调整此代码应该不难。