【问题标题】:How to get background image in opencv python [duplicate]如何在opencv python中获取背景图像[重复]
【发布时间】:2019-10-23 09:31:28
【问题描述】:

我需要从视频enter image description here 的图像中去除前景的背景。

  • 我需要移除手、笔和阴影。
  • 我只需要获取线条图像。

但我不知道怎么做。只有我能找到如何减去背景图像。

我尝试使用此代码从原始图像中减去前景图像以获得前景。

cap = cv2.VideoCapture('Video.mp4')
fgbg = cv2.createBackgroundSubtractorMOG2(history=100, varThreshold=50, detectShadows=True)

如果有什么方法可以只获取线条图像?

【问题讨论】:

  • 我的问题不能用那个答案来解决。我需要获取线条图像。但是有了这个答案,我仍然有前景图像。我更详细地编辑了我的问题以显示它是不同的问题。

标签: python-2.7 opencv image-processing


【解决方案1】:

我相信您可以使用运行平均值来做到这一点 我们可以使用 open-cv cv.accumulateWeighted() 函数来做到这一点,它可能无法提取背景,因为它应该可以很好地完成工作。 这是代码:

import cv2
import numpy as np

c = cv2.VideoCapture(0)
_,f = c.read()

avg1 = np.float32(f)
avg2 = np.float32(f)

while(1):
    _,f = c.read()

    cv2.accumulateWeighted(f,avg1,0.1)
    cv2.accumulateWeighted(f,avg2,0.01)

    res1 = cv2.convertScaleAbs(avg1)
    res2 = cv2.convertScaleAbs(avg2)

    cv2.imshow('img',f)
    cv2.imshow('avg1',res1)
    cv2.imshow('avg2',res2)
    k = cv2.waitKey(20)

    if k == 27:
        break

cv2.destroyAllWindows()
c.release()

更多详情可以查看来源here

【讨论】:

  • 非常感谢。这是非常有趣的方式。但是当我尝试处理我的 mp4 文件时,它并没有很好地工作。我只需要获取线条图像,但我的手部图像仍然模糊。我无法删除手部图像。 TT
  • @HaYoungKim 谢谢一个有趣的问题。可能有点晚了,但是你找到从图片中获取背景的方法了吗?
猜你喜欢
  • 2014-06-13
  • 2016-03-31
  • 1970-01-01
  • 2017-10-14
  • 2014-12-29
  • 2021-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多