2014-02-19 1 views
4

OpenCV에서 BackgroundSubtractorMOG를 사용하여 개체를 추적하고 있습니다. 그들이 나타날 때, 그것은 잘 작동하지만 배경이 빠르게 적응할 수 있도록 정적 개체를 추적 할 수 없습니다. 어떻게 백그라운드 적응을 느리게 만들 수 있습니까?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 (INT) 그다지 일치 함수 원형 – user2212461

+0

의 PTR createBackgroundSubtractorMOG (INT 기록 = 200, INT nmixtures = 5 배 backgroundRatio = 0.7, 이중 noiseSigma = 0) –

+0

감사 작정이 파라미터 그것에 좋은 작품! – user2212461