BackgroundSubtractorMOG2很吵?

时间:2014-09-10 03:59:49

标签: c++ opencv

我使用BackgroundSubtractorMOG2作为以下代码

BackgroundSubtractorMOG2 bgr;
double learningRate = 0.05;
(bgr)(img_input, img_mask, learningRate);

但结果并不好,这里有很多噪点前景像素(如下图所示) enter image description here

当我使用BackgroundSubtractorMOG作为下面的代码时

BackgroundSubtractorMOG bgr(81, 3, 0.1);
double learningRate = 0.05;
(bgr)(img_input, img_mask, learningRate);

结果更好,但这种方法比较慢(如下图所示) enter image description here

我想使用BackgroundSubtractorMOG2,因为它更快,但结果非常噪音。

有人可以告诉我使用BackgroundSubtractorMOG2的正确方法吗?

谢谢!

T& T公司

1 个答案:

答案 0 :(得分:4)

为什么不在输出上使用形态学操作?

vector<vector<Point >> contours;
Mat kernel=getStructuringElement(MORPH_ELLIPSE,Size(5,5));
Mat kernel2=getStructuringElement(MORPH_ELLIPSE,Size(10,10));
morphologyEx(img_mask,img_mask,CV_MOP_ERODE,kernel);
morphologyEx(img_mask,img_mask,CV_MOP_DILATE,kernel2);

findContours(img_mask,contours,CV_RETR_TREE,CV_CHAIN_APPROX_SIMPLE);
drawContours(img_input,contours,-1,cv::Scalar(255,255,255),2);
output=img_input.clone();