BackgroundSubtractorMOG在离开框架后仍保留对象

时间:2014-09-06 15:11:28

标签: python opencv background-subtraction

我尝试使用BackgroundSubtractorMOG删除背景,但是有一些对象已经离开了框架,但BackgroundSubtractorMOG.apply()的结果仍然显示对象仍然在场景中。

这是我的代码

inputVideo = cv2.VideoCapture('input.avi')
fgbg = cv2.BackgroundSubtractorMOG()

while inputVideo.isOpened():
    retVal, frame = inputVideo.read()

    fgmask = fgbg.apply(frame)

    cv2.imshow('Foreground', fgmask)
    cv2.imshow('Original', frame)
    if cv2.waitKey(1) & 0xFF == 27:
        break

我也尝试过BackgroundSubtractorMOG和自定义参数(历史= 200,nmixtures = 5,比率= 0.8)但结果是一样的。我做错了什么或有任何推荐吗?请帮忙。

1 个答案:

答案 0 :(得分:9)

问题出在fgbg.apply。出于某种原因,learningRate设置为0。像这样打电话:

history = 10   # or whatever you want it to be

fgmask = fgbg.apply(frame, learningRate=1.0/history)

应该归功于塞巴斯蒂安·拉米雷斯(Sebastian Ramirez),他在opencv上开了一张票并找到了解决方案