此代码共涉及四个窗口:
1.原图
2.前景(二值图):通过BackgroundSubtractorMOG2()函数获得
3.前景(彩图):通过原图与前景(二值图)重叠获取
4.背景图:通过BackgroundSubtractorMOG2.getBackgroundImage()获得
#include "opencv2/core/core.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/video/background_segm.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <stdio.h>
using namespace std;
using namespace cv;
static void help()
{
printf("\n\n\n\t此程序展示了用高斯背景建模进行视频的背景分离方法.\n\n\t主要采用cvUpdateBGStatModel()函数\n"
"\n\t程序首先会“学习背景”,然后进行分割。\n"
"\n\t可以用过【Space】空格进行功能切换。\n\n");
}
int main(int argc, const char** argv)
{
help();
VideoCapture cap;
bool update_bg_model = true;//默认算法自动更新
cap.open(0);
if( !cap.isOpened() )
{
printf("can not open camera or video file\n");
ret