2014-02-19 3 views
4

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

Настройка скорости обучения с помощью конструктора не изменяется, что:

BackgroundSubtractorMOG pBSMOG = BackgroundSubtractorMOG(???); 

Как я могу решить эту проблему? Благодаря!

ответ

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) 

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

+0

BackgroundSubtractorMOG pBSMOG = BackgroundSubtractorMOG (интермедиат) оленья кожа соответствовать прототипу функции – user2212461

+0

Ptr createBackgroundSubtractorMOG (история INT = 200, внутр nmixtures = 5, двойная backgroundRatio = 0,7, двойная noiseSigma = 0) –

+0

Большого спасибо, с этими параметрами работает хорошо! – user2212461

Смежные вопросы