OpenCV C ++: как замедлить фоновую адаптацию BackgroundSubtractorMOG?

Я использую BackgroundSubtractorMOG в OpenCV для отслеживания объектов. Когда они появляются, все работает нормально, но фон быстро адаптируется, поэтому я не могу отслеживать статические объекты. Как сделать медленную адаптацию фона (я не хочу, чтобы она была полностью статичной, только медленнее)?

Установка скорости обучения с помощью конструктора не меняет этого:

BackgroundSubtractorMOG pBSMOG = BackgroundSubtractorMOG(???);

Как я могу решить это? Спасибо!

4

Решение

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 )

Это намного быстрее, чем предыдущий, и это также может устранить обнаружение теней.

8

Другие решения

Других решений пока нет …