OpenCV Вычитание фона путем усреднения кадров
Как мне реализовать вычитание фона (фоновая модель, полученная путем усреднения сначала.. скажем, 50 кадров..) в opencv Я попытался найти некоторые коды, но обнаружил, что они были в python..im, работающем на C++(Visual Studio 2013) Небольшой рабочий код сниппет поможет.. спасибо!
1 ответ
OpenCV обеспечивает возможность вычитания фона. См. BackgroundSubtractorMOG2, который моделирует фон с помощью смеси гауссианов и поэтому достаточно устойчив к изменениям фона.
Параметры history
это номера кадра, используемые для построения фоновой модели.
#include <opencv2\opencv.hpp>
using namespace cv;
int main(int argc, char *argv[])
{
int history = 50;
float varThreshold = 16.f; // default value
BackgroundSubtractorMOG2 bg = BackgroundSubtractorMOG2(history, varThreshold);
VideoCapture cap(0);
Mat3b frame;
Mat1b fmask;
for (;;)
{
cap >> frame;
bg(frame, fmask, -1);
imshow("frame", frame);
imshow("mask", fmask);
if (cv::waitKey(30) >= 0) break;
}
return 0;
}