Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 如何在opencv python中获取背景图像_Python 2.7_Opencv_Image Processing - Fatal编程技术网

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谢谢你回答这个有趣的问题。可能有点晚了,但是你找到了从图片中获取背景的方法吗?我的问题无法用这个答案解决。我需要得到线的图像。但有了这个答案,我还有前景图像。我编辑我的问题更详细,以显示它的不同问题。