2014-09-06 53 views
5

我試圖使用BackgroundSubtractorMOG刪除背景,但有一些對象,已經離開框架但來自BackgroundSubtractorMOG.apply()的結果仍然顯示對象仍然在現場。BackgroundSubtractorMOG仍然保留對象後,它離開框架

這是我的代碼

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),但結果是相同的。我做錯了什麼或有什麼建議嗎?請幫忙。

+0

我有同樣的問題。歷史參數似乎被忽略。使用兩個不同的值會產生完全相同的圖像。我認爲歷史參數默認爲0,這意味着初始背景圖像是唯一使用的圖像,算法從不學習。 – RussellStewart 2014-11-06 04:46:55

回答

8

問題出在fgbg.apply。由於某些原因,learningRate設置爲0。撥打電話是這樣的:

history = 10 # or whatever you want it to be 

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

信貸應該去塞巴斯蒂安·拉米雷斯誰OpenCV中開始了票,並找到了解決辦法

+0

非常感謝您的評論,它可以幫助我。 – Arsen 2016-03-04 21:37:03

相關問題