我有以下代码。
cv::VideoCapture capture;
cv::Mat image;
cv::Mat foregroundMask
cv::BackgroundSubtractorMOG2 backgroundModel;
// update background model
for(int i = 0; i < 10; ++i)
{
capture >> image;
backgroundModel(image, foregroundMask);
}
//clear background model
// TODO
// update background model
for(int i = 0; i < 10; ++i)
{
capture >> image;
backgroundModel(image, foregroundMask);
}
如何清除背景模型并从头开始重新更新?就像它之前没有更新过。在上面的代码中替换TODO部分的代码应该是什么?
答案 0 :(得分:3)
调用void initialize(Size frameSize, int frameType);
方法。
//clear background model
backgroundModel.initialize(image.size(), image.type());
根据source code,这种方法将清除内部模型。