我试图使用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中开始了一张票,并找到了解决方案