Я использую фоновый вычитатель, который я объявил так:
BackgroundSubtractorMOG subtractor;
Теперь я хотел бы использовать вычитатель с нестандартными параметрами. Я пробовал количество комбинаций значений параметров в следующем объявлении:
BackgroundSubtractorMOG subtractor = BackgroundSubtractorMOG(100, 10, 0.9 20);
Однако я не вижу никакой разницы в маске переднего плана, создаваемой subtractor
, как будто параметры не имеют никакого эффекта.
Я не правильно настраиваю параметры? Как правильно их установить?
У меня та же проблема, кажется, что параметры, предлагаемые конструктором, не влияют на детектор, я получил хорошее вычитание фона с параметрами по умолчанию, но также плохую производительность. Я получил лучшие результаты по производительности, используя вариацию под названием: BackgroundSubtractorMOG2. Вы можете использовать ее так же, как и BackgroundSubtractorMOG.
cv::BackgroundSubtractorMOG2 mog;
//--Update Background
mog(frame,foreground,0.01);
когда вы получаете маску переднего плана, вы устанавливаете learningRate? В Java-версии OpenCV, которую я использую для приложения Android, я создаю маску переднего плана следующим образом:
subtractor.apply(mRgb, mFGMask, 0.1);
Эта скорость обучения 0,1 работает очень быстро. Я думаю, что требуется 10 кадров, чтобы полностью затемнить мою выходную маску на черный экран.