12

我正在使用OpenCV2.2來實現使用Background Subtraction方法進行移動對象檢測。我使用高斯混合模型(GMM)方法來模擬背景參考圖像。如何在OpenCV中使用cv :: BackgroundSubtractorMOG?

我使用OpenCV2.2中提供的類cv :: BackgroundSubtractorMOG直接獲取前景像素(或前景蒙版)。這很方便,但由cv :: BackgroundSubtractorMOG返回的前景蒙板不如我預期的那麼好。另外,看起來cv :: BackgroundSubtractorMOG比用OpenCV1.0提供的C語言編寫的GMM方法更差。

下面是我的代碼OpenCV2.2:

cv::BackgroundSubtractorMOG mog; 
mog(frame, fgMask, 0.01); 

所以,爲什麼我使用的方法在一個錯誤的方式?

順便說一下,cv :: BackgroundSubtractorMOG是否對前景像素執行陰影去除?

非常感謝。

+0

下面是使用OpenCV的Background Subtraction函數從3.0文檔中獲得的一個有用的概述:http://docs.opencv.org/master/db/d5c/tutorial_py_bg_subtraction.html – Pierz

回答

12

當您創建mog時,您沒有定義任何參數,因此它是使用默認參數創建的。 Here你有每個參數的描述,也許就是這樣。嘗試3,4 5高斯。

此功能不會執行陰影去除,但您有this其他功能。祝你好運!

1

F.X.對this thread答案給出

backgroundSubtractor = new BackgroundSubtractorMOG(3, 4, 0.8); 
+0

但在我的應用程序中運行速度非常緩慢。我在尋找一些很好的參數 – austin

5

樣品參數有哪些去除背景(檢測前景)遠高於OpenCV的標準執行GM​​M更好最近的算法。

例如,在this journal article中描述了基於塊的分類器級聯方法,以及其基於C++的source code

+0

輸入目錄結構應該如何使用這個工具?無論我把它扔到什麼地方,它似乎在readdir()上都會發生segfault。 – RussellStewart

0

我會推薦使用以下設置開始。然後你可以開始調整你的參數:

cv::BackgroundSubtractorMOG2 mog; 
mog(rawFrame,foregroundFrame,-1); 
mog.set("nmixtures", 3); 
mog.set("detectShadows",1); 

在這個例子中,我設置了3個高斯混合的MOG2減法器。我也啓用了陰影檢測。

相關問題