2012-11-06 5 views
2

BackgroundSubtractor 알고리즘 BackgroundSubtractorMOG2를 사용할 때 openCV에서 섀도우 감지를 비활성화하려고합니다. 그러나 bShadowDetection을 false로 설정 한 후에도 알고리즘은 여전히 ​​그림자를 전경 객체로 추적하는 것으로 보입니다.BackgroundSubtractorMOG2에서 그림자 추적을 어떻게 비활성화 할 수 있습니까?

cv::BackgroundSubtractorMOG2 bg; 
bg.nmixtures = 3; 
bg.bShadowDetection = false; 

나는 어떤 기회 추적 그림자를 해제하기 위해 BackgroundSubtractorMOG2 클래스의 다른 멤버를 조정하기 위해 노력했다. important class members of BackgroundSubtractorMOG2

bShadowDetection 또는 fTau와 같은 그림자 감지와 관련된 사항은 아무런 효과가 없습니다. 문서의 설명도 다소 부적절합니다.

+0

당신은 아마 소스 코드를 추적 할 수 있습니다 실행 : 마지막으로 나는 아래의 코드를 사용하여 그림자 감지 기능을 해제 할 수 있었다 . 생성자에서 매개 변수를 설정하려고 했습니까? – james

답변

1

감사합니다. James for you 응답. nShadowDetection을 0으로 설정하면 누군가가 같은 문제를 겪고있는 경우 탐지 된 그림자의 양을 줄일 수 있습니다.

mog2.nShadowDetection = 0; 
2

OpenCV-2.4.3을 실제로 사용하는 사람은 매개 변수 변수가 보호되고 액세스 할 수 없으므로 다른 해결책이 적합하지 않습니다.

그러나 현재의 OpenCV (2.4.3) API 설명서도 잘못되었습니다 (http://docs.opencv.org/modules/video/doc/motion_analysis_and_object_tracking.html#backgroundsubtractormog2)!

using namespace cv; 

Ptr<BackgroundSubtractorMOG2> bg = 
    Algorithm::create<BackgroundSubtractorMOG2>("BackgroundSubtractor.MOG2"); 
bg->set("detectShadows", 0); 
0

I을 :

당신은 알고리즘에 의해 BackgroundSubtractorMOG2을 만들어야합니다 :: 'detectShadows'로 설정-방법을() 메소드를 생성하고 호출은 예를 들어 이것을 사용 0

동일 'm OpenCV 2.4.2 사용하고 동일한 문제가있었습니다. 단일 단계 디버깅하여 코드에서 OpenCV \ 모듈 \ 비디오 \ SRC의 \의 bgfg_gaussmix2.cpp에서

cv::BackgroundSubtractorMOG2 m_bg; 
    m_bg.set("nmixtures",3); 
    m_bg.set("detectShadows", false);