Python 2.7 如何在opencv python中获取背景图像

Python 2.7 如何在opencv python中获取背景图像,python-2.7,opencv,image-processing,Python 2.7,Opencv,Image Processing,我需要得到的背景删除前景的视频图像 我需要去掉手、笔和影子 我只需要得到线条图像 但我不知道怎么做。只有我能找到如何减去背景图像 我试着用这段代码从原始图像减去前景图像,得到前景 cap = cv2.VideoCapture('Video.mp4') fgbg = cv2.createBackgroundSubtractorMOG2(history=100, varThreshold=50, detectShadows=True) 如果有任何方法只获取线条图像 我相信你可以用跑步平均成绩来

我需要得到的背景删除前景的视频图像

  • 我需要去掉手、笔和影子
  • 我只需要得到线条图像
但我不知道怎么做。只有我能找到如何减去背景图像

我试着用这段代码从原始图像减去前景图像,得到前景

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

如果有任何方法只获取线条图像

我相信你可以用跑步平均成绩来做到这一点 我们可以使用open cv.acgregateweighted()函数来实现这一点,它可能不会像预期的那样提取背景,但可以很好地完成这项工作。 代码如下:

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()


有关更多详细信息,请查看来源

非常感谢。这是非常有趣的方式。但是当我试图处理我的mp4文件时,它并没有很好地工作。我需要得到唯一的线图像,但我仍然有模糊的手图像。我无法删除手的图像。TT@HaYoungKim谢谢你回答这个有趣的问题。可能有点晚了,但是你找到了从图片中获取背景的方法吗?我的问题无法用这个答案解决。我需要得到线的图像。但有了这个答案,我还有前景图像。我编辑我的问题更详细,以显示它的不同问题。