if (frame.empty())
break;
cvtColor(frame, gray, CV_RGB2GRAY);
if (count == 1)
{
Mog_Bgs.init(gray);
Mog_Bgs.processFirstFrame(gray);
cout<<" Using "<<TRAIN_FRAMES<<" frames to training GMM..."<<endl;
}
else if (count < TRAIN_FRAMES)
{
Mog_Bgs.trainGMM(gray);
}
else if (count == TRAIN_FRAMES)
{
Mog_Bgs.getFitNum(gray);
cout<<" Training GMM complete!"<<endl;
}
else
{
Mog_Bgs.testGMM(gray);
mask = Mog_Bgs.getMask();
morphologyEx(mask, mask, MORPH_OPEN, Mat());
erode(mask, mask, Mat(7, 7, CV_8UC1), Point(-1, -1)); // 您可以在这里使用Mat(5,5,CV_8UC1)来减少失真
dilate(mask, mask, Mat(7, 7, CV_8UC1), Point(-1, -1));
imshow("mask", mask);
}
imshow("input", frame);
if ( cvWaitKey(10) == 'q' )
break;
}
return 0;
}
code end