OpenCV如何用背景替换切出的对象
OpenCV how to replace cut out object with background
我有两张图片,一张包含盒子,另一张没有。由于相机不在同一位置并且稍微平移,因此两张照片之间存在较小的垂直差异。我想把盒子剪下来,用另一张图片的信息替换掉那个洞。
我想达到这样的效果(来自计算机视觉课程的幻灯片)
想过用cv2.createBackgroundSubtractorMOG2()
的方法,但是好像只有2张图片不行
由于差异,简单地从另一张图片中减去图片也不起作用。
该课程建议使用 RANSAC 来计算两张图片之间最可能的关系,并减去变化很大的区域。但是我该如何真正填补这些漏洞呢?
非常感谢!!
你可以试试这个库来解决背景减法问题。 https://github.com/andrewssobral/bgslibrary
有 python 个此工具的包装器。
如果您仅使用一对图像(或仅使用几张图像),图像拼接方法优于背景减法。
步骤是:
- 计算两个图像之间的单应性。
- 扭曲第二张图像以与第二张图像重叠。
- 用扭曲图像中的像素替换人的区域。
This link 显示图像拼接的基本示例。如果两个图像的不同位置都有人,您将需要额外的工作,否则调整此代码应该不难。
我有两张图片,一张包含盒子,另一张没有。由于相机不在同一位置并且稍微平移,因此两张照片之间存在较小的垂直差异。我想把盒子剪下来,用另一张图片的信息替换掉那个洞。
我想达到这样的效果(来自计算机视觉课程的幻灯片)
想过用cv2.createBackgroundSubtractorMOG2()
的方法,但是好像只有2张图片不行
由于差异,简单地从另一张图片中减去图片也不起作用。 该课程建议使用 RANSAC 来计算两张图片之间最可能的关系,并减去变化很大的区域。但是我该如何真正填补这些漏洞呢?
非常感谢!!
你可以试试这个库来解决背景减法问题。 https://github.com/andrewssobral/bgslibrary
有 python 个此工具的包装器。
如果您仅使用一对图像(或仅使用几张图像),图像拼接方法优于背景减法。
步骤是:
- 计算两个图像之间的单应性。
- 扭曲第二张图像以与第二张图像重叠。
- 用扭曲图像中的像素替换人的区域。
This link 显示图像拼接的基本示例。如果两个图像的不同位置都有人,您将需要额外的工作,否则调整此代码应该不难。