BackgroundSubactorMOG在对象离开帧后仍然保留该对象



我试图使用BackgroundSubtractactorMOG来移除背景,但有一些对象已经离开了框架,但BackgroundSubtroctactorMOB.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

我也尝试过使用自定义参数(history=200,nmixtures=5,ratio=0.8)的BackgroundSubactorMOG,但结果是一样的。我做错了什么或有什么建议吗?请帮忙。

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

history = 10   # or whatever you want it to be
fgmask = fgbg.apply(frame, learningRate=1.0/history)

这应该归功于Sebastian Ramirez,他在opencv中开始了一张票,并找到了解决方案

最新更新