Я использую BackgroundSubtractorMOG2
качестве кода ниже
BackgroundSubtractorMOG2 bgr;
double learningRate = 0.05;
(bgr)(img_input, img_mask, learningRate);
Но результат не очень хорош, здесь есть много пикселей переднего плана шума (рисунок ниже)
Когда я использую BackgroundSubtractorMOG в качестве кода ниже
BackgroundSubtractorMOG bgr(81, 3, 0.1);
double learningRate = 0.05;
(bgr)(img_input, img_mask, learningRate);
Результат лучше, но этот метод медленнее (рисунок ниже)
Я хочу использовать BackgroundSubtractorMOG2, потому что он быстрее, но результат очень шумный.
Кто-нибудь может показать мне правильный способ использования BackgroundSubtractorMOG2?
Спасибо!
Т & Т
Почему вы не используете морфологическую операцию на выходе?
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();