如何在OpenCV中使用cv :: BackgroundSubtractorMOG?

vis*_*sit 13 opencv computer-vision background-subtraction mog shadow-removal

我正在使用OpenCV2.2用背景减法的方法实现移动物体检测.我使用高斯混合模型(GMM)方法来模拟背景参考图像.

我通过使用OpenCV2.2中提供的类cv :: BackgroundSubtractorMOG直接获取前景像素(或前景蒙版).这很方便,但是cv :: BackgroundSubtractorMOG返回的前景掩码不如我预期的那么好.此外,似乎cv :: BackgroundSubtractorMOG的性能比OpenCV1.0中提供的C语言中写的GMM方法差.

以下是我在OpenCV2.2中的代码:

cv::BackgroundSubtractorMOG mog;
mog(frame, fgMask, 0.01);
Run Code Online (Sandbox Code Playgroud)

那么,我是否以错误的方式使用该方法?

顺便说一句,cv :: BackgroundSubtractorMOG是否对前景像素执行阴影去除?

非常感谢你.

Jav*_*ock 12

创建mog时,您没有定义任何参数,因此使用默认参数创建它.在这里你有每个参数的描述,也许就是这样.尝试使用3,4,5高斯.

此功能不perforn阴影去除,但你有这个其他功能一样.祝好运!


mta*_*all 5

最近的算法删除了背景(检测前景)远远优于OpenCV中的标准GMM实现.

例如,本期刊文章中描述了一种基于块的分类器级联方法,以及基于C++的源代码.