4

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

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

BackgroundSubtractorMOG pBSMOG = BackgroundSubtractorMOG(???);

我该如何解决这个问题?谢谢!

4

1 回答 1

8
BackgroundSubtractorMOG pBSMOG = BackgroundSubtractorMOG(int history=200, int nmixtures=5, double backgroundRatio=0.7, double noiseSigma=0);

在哪里,

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

增加该history值会减慢适应率。

OpenCV 中还有另一个可用的功能:

Ptr <BackgroundSubtractorMOG2> createBackgroundSubtractorMOG2(int
history=500, double varThreshold=16, bool detectShadows=true )

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

于 2014-02-19T07:39:08.350 回答