How to use cv::BackgroundSubtractorMOG in OpenCV?
background-subtraction, computer-vision, mog, opencv, shadow-removal
Solution
When you create mog, you are not defining any parameters, so it is created with default parameters. Here you have a description of each parameter, maybe is just that. Try with 3, 4 5 Gaussians.
This function does not perforn shadow-removal but you have this other function that does. Good luck!
Problem
I'm using OpenCV2.2 to implement moving objects detection with the method of Background Subtraction. And I use the Gaussian Mixture Model(GMM) method to model the background reference image. I directly get the foreground pixels(or foreground mask) by using the class cv::BackgroundSubtractorMOG provided in OpenCV2.2. It's convenient but the foreground mask returned by cv::BackgroundSubtractorMOG is not as good as I expected. In addition, it seems that cv::BackgroundSubtractorMOG performs poorer than the method of GMM wrote in C language provided in OpenCV1.0. The following is my code in OpenCV2.2: ``` cv::BackgroundSubtractorMOG mog; mog(frame, fgMask, 0.01); ``` So, did I use the method in a wrong way? By the way, does cv::BackgroundSubtractorMOG perform shadow removal on the foreground pixels? Thank you very much.