我使用OpenCV2.2实现运动目标检测与背景扣除的方法。 我用的高斯混合模型(GMM)方法将背景参照图像进行建模。
我使用类品种直接将前景像素(或前景蒙):: BackgroundSubtractorMOG在OpenCV2.2提供。 这是方便,但由CV返回前景蒙:: BackgroundSubtractorMOG并不如我预期的那样好。 此外,似乎CV :: BackgroundSubtractorMOG执行较差比GMM的方法在OpenCV1.0提供C语言写的。
以下是我在OpenCV2.2代码:
cv::BackgroundSubtractorMOG mog;
mog(frame, fgMask, 0.01);
所以,我有没有用在一个错误的方式方法?
顺便说一句,不CV :: BackgroundSubtractorMOG对前景像素执行阴影去除?
非常感谢你。
当您创建MOG,你不定义任何参数,所以它使用默认参数创建的。 在这里你有每个参数的描述,也许就是这样。 尝试用3,4个5高斯。
此功能不perforn阴影去除,但你有这个其他功能一样。 祝好运!
有哪些去除背景(检测前景)远高于OpenCV的标准执行GMM更好最近的算法。
例如,有在所述的基于块的分类器级联的方法本期刊文章 ,其基于C ++的沿源代码 。
FX对回答这个线程给出样品参数
backgroundSubtractor = new BackgroundSubtractorMOG(3, 4, 0.8);
我会建议使用下面的设置即可。 然后,你就可以开始调整你的参数:
cv::BackgroundSubtractorMOG2 mog;
mog(rawFrame,foregroundFrame,-1);
mog.set("nmixtures", 3);
mog.set("detectShadows",1);
在这个例子中我设定3个高斯混合物MOG2减法器。 我还启用了阴影检测。