OpenCV背景替代c ++

时间:2015-11-28 14:09:22

标签: c++ opencv background-subtraction

我已经创建了一个后台Subsctractor(MOG),现在,我想更改一些参数:

Ptr< BackgroundSubtractor> pMOG, pMOG2;
pMOG = new BackgroundSubtractorMOG();
pMOG.set("varThreshold",5); //does't work
pMOG->operator()(inputImage, outputImage); //works, but the output is not enought "sensitive"

有谁知道如何处理这件事?我想更改阈值,因为它返回一个掩码,它并不总是检测我的移动物体(例如,如果它们的颜色几乎是背景颜色)。

谢谢!

1 个答案:

答案 0 :(得分:2)

这是因为BackgroundSubtractorMOG没有名为varThreshold的参数。您可能想在BackgroundSubtractorMOG2上设置此参数。

BackgroundSubtractorMOG的参数是:

"history"
"nmixtures"
"backgroundRatio"
"noiseSigma"

BackgroundSubtractorMOG2是:

"history"
"nmixtures"
"varThreshold"
"detectShadows"
"backgroundRatio"
"varThresholdGen"
"fVarInit"
"fVarMin"
"fVarMax"
"fCT"
"nShadowDetection"
"fTau"

您可以在video_init.cpp中找到这些信息(检查OpenCV版本2.4.9)。

您也可以直接在构造函数中设置一些参数,这可能是最安全的方法。