Эта функция берет входной видеопоток и обрабатывает его:
Он берет 100 кадров и вычисляет среднее значение и делает его фоновым, а затем вычитает текущее изображение из фоновой модели и извлекает передний план, но его очень шумно, может кто-нибудь любезно подсказать мне, как отображать объекты переднего плана в его реальной форме.
int foregroundNbackground(VideoCapture cap){
int count=0;
vector<Mat> img_bg;
Mat img, img_diff, b1;
Mat Background = T12(cap); // This calculates the average of previous 100 frames and make it the background model
imshow("Model", Background);
while(1){
cap >> img;
if(count < 100){
img_bg.push_back(img);
}
if(count == 100){
Background = getMean(img_bg);
cvtColor(Background, b1, CV_BGR2GRAY);
imshow("Model", b1);
count = 0;
img_bg.clear();
}
absdiff(img, Background, img_diff);
count++;
cvtColor(img_diff,img_diff, CV_BGR2GRAY);
threshold(img_diff,img_diff,80,255, CV_THRESH_BINARY);
imshow("Task13", img_diff);
waitKey(33);
}
}
Задача ещё не решена.
Других решений пока нет …