int main(int argc, char** argv) { VideoCapture cap; bool update_bg_model = true; help(); if( argc < 2 ) cap.open(0); else cap.open(std::string(argv[1])); if( !cap.isOpened() ) { printf("\nCan not open camera or video file\n"); return -1; } Mat tmp_frame, bgmask, out_frame; cap >> tmp_frame; if(!tmp_frame.data) { printf("can not read data from the video source\n"); return -1; } namedWindow("video", 1); namedWindow("segmented", 1); BackgroundSubtractorMOG bgsubtractor; bgsubtractor.set("noiseSigma", 10); for(;;) { cap >> tmp_frame; if( !tmp_frame.data ) break; bgsubtractor(tmp_frame, bgmask, update_bg_model ? -1 : 0); //CvMat _bgmask = bgmask; //cvSegmentFGMask(&_bgmask); refineSegments(tmp_frame, bgmask, out_frame); imshow("video", tmp_frame); imshow("segmented", out_frame); int keycode = waitKey(30); if( keycode == 27 ) break; if( keycode == ' ' ) { update_bg_model = !update_bg_model; printf("Learn background is in state = %d\n",update_bg_model); } } return 0; }
//-----------------------------------【main( )函数】-------------------------------------------- // 描述:控制台应用程序的入口函数,我们的程序从这里开始 //------------------------------------------------------------------------------------------------- int main(int argc, char** argv) { VideoCapture cap; bool update_bg_model = true; help(); cap.open("1.avi"); if( !cap.isOpened() ) { printf("\nCan not open camera or video file\n"); return -1; } Mat tmp_frame, bgmask, out_frame; cap >> tmp_frame; if(!tmp_frame.data) { printf("can not read data from the video source\n"); return -1; } namedWindow("video", 1); namedWindow("segmented", 1); BackgroundSubtractorMOG bgsubtractor; bgsubtractor.set("noiseSigma", 10); for(;;) { cap >> tmp_frame; if( !tmp_frame.data ) break; bgsubtractor(tmp_frame, bgmask, update_bg_model ? -1 : 0); refineSegments(tmp_frame, bgmask, out_frame); imshow("video", tmp_frame); imshow("segmented", out_frame); int keycode = waitKey(1); if( keycode == 27 ) break; if( keycode == ' ' ) { update_bg_model = !update_bg_model; printf("\n\t>‘背景学习’技术的状态 = %d\n",update_bg_model); } } return 0; }