我试图在使用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);