OpenCV C++:如何减慢BackgroundSubtractorMOG的背景调整?

use*_*461 4 c++ opencv background-subtraction

我在OpenCV中使用BackgroundSubtractorMOG来跟踪对象.当它们出现时,它工作正常,但背景快速适应,所以我无法跟踪静态对象.如何使背景调整变慢(我不希望它完全静态,只是更慢)?

使用构造函数设置学习速率不会改变:

BackgroundSubtractorMOG pBSMOG = BackgroundSubtractorMOG(???);
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?谢谢!

Ano*_*bhu 8

BackgroundSubtractorMOG pBSMOG = BackgroundSubtractorMOG(int history=200, int nmixtures=5, double backgroundRatio=0.7, double noiseSigma=0);
Run Code Online (Sandbox Code Playgroud)

哪里,

  • 历史 - 历史的长度.
  • nmixtures - 高斯混合数.
  • backgroundRatio - 背景比率.
  • noiseSigma - 噪声强度(亮度或每个颜色通道的标准偏差).0表示一些自动值.

增加该history值会降低适应率.

OpenCV还有另一个功能:

Ptr <BackgroundSubtractorMOG2> createBackgroundSubtractorMOG2(int
history=500, double varThreshold=16, bool detectShadows=true )
Run Code Online (Sandbox Code Playgroud)

这比前一个快得多,它也可以消除检测阴影.