Я создал фоновый 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"
Кто-нибудь знает, как я мог справиться с этим? Я хочу изменить пороговое значение, потому что оно возвращает маску, которая не всегда обнаруживает мои движущиеся объекты (например, если их цвет почти соответствует цвету фона).
Спасибо!
Это потому что 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).
Вы также можете установить некоторые параметры непосредственно в конструкторе, что, вероятно, является самым безопасным способом.
Других решений пока нет …