BackgroundSubtractorMOG2

BackgroundSubtractorMOG2

我试图在使用BackgroundSubtractor算法BackgroundSubtractorMOG2时禁用openCV中的阴影检测。
但是,即使将bShadowDetection设置为false之后,该算法似乎仍会跟踪阴影作为前景对象。

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

我试图调整BackgroundSubtractorMOG2类的其他成员,以无缘无故地禁用阴影跟踪。 important class members of BackgroundSubtractorMOG2

bShadowDetection或fTau等应与阴影检测有关的方法似乎无效。该文档中的解释也有些不足。

最佳答案

对于实际使用OpenCV-2.4.3的任何人,其他解决方案都不适合,因为参数变量设置为protected且不可访问。

但是,即使当前的OpenCV(2.4.3)API文档也是错误的(http://docs.opencv.org/modules/video/doc/motion_analysis_and_object_tracking.html#backgroundsubtractormog2)!

您必须通过Algorithm::create()方法创建BackgroundSubtractorMOG2,并调用“detectShadows”等于0的set方法。

作为示例,使用以下命令:

using namespace cv;

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

10-08 19:11