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

时间:2017-05-22 14:27:18

标签: python opencv image-processing background-subtraction ransac

我有两张图片,一张图片包含一个盒子,另一张图片没有。两张照片之间存在小的垂直差异,因为相机不在同一位置并且被翻译了一点。我想切出盒子,用另一张图片中的信息替换洞。

我想实现这样的目标(来自计算机视觉课程的幻灯片)

enter image description here

我考虑使用cv2.createBackgroundSubtractorMOG2()方法,但它似乎只适用于2张图片。

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

非常感谢提前!!

2 个答案:

答案 0 :(得分:0)

您可以尝试使用此库来解决背景减法问题。 https://github.com/andrewssobral/bgslibrary

这个工具有python包装器。

答案 1 :(得分:0)

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

步骤如下:

  1. 计算两幅图像之间的单应性。
  2. 扭曲第二个图像以重叠第二个图像。
  3. 用变形图像中的像素替换人体区域。
  4. This link显示了图像拼接的基本示例。如果两个图像在不同的地方都有人类,你将需要额外的工作,但是否则不应该很难调整这些代码。