Example youtube
code
.
#include "opencv2/opencv.hpp" using namespace cv; int main(int, char) { VideoCapture cap(0); // open the default camera if (!cap.isOpened()) // check if we succeeded return -1; Ptr< BackgroundSubtractorMOG2 > MOG2 = createBackgroundSubtractorMOG2(3000, 64); //Options //MOG2->setHistory(3000); //MOG2->setVarThreshold(128); //MOG2->setDetectShadows(1); //shadow detection on/off Mat Mog_Mask; Mat Mog_Mask_morpho; Rect roi(100, 100, 300, 300); namedWindow("Origin", 1); namedWindow("ROI", 1); Mat frame; Mat RoiFrame; Mat BackImg; int LearningTime=0; //300; Mat element; element = getStructuringElement(MORPH_RECT, Size(9, 9), Point(4, 4)); for (;;) { cap >> frame; // get a new frame from camera if (frame.empty()) break; //option blur(frame(roi), RoiFrame, Size(3, 3)); //RoiFrame = frame(roi); //Mog processing MOG2->apply(RoiFrame, Mog_Mask); if (LearningTime < 300) { LearningTime++; printf("background learning %d \n", LearningTime); } else LearningTime = 301; //Background Imge get MOG2->getBackgroundImage(BackImg); //morphology morphologyEx(Mog_Mask, Mog_Mask_morpho, CV_MOP_DILATE, element); //Binary threshold(Mog_Mask_morpho, Mog_Mask_morpho, 128, 255, CV_THRESH_BINARY); imshow("Origin", frame); imshow("ROI", RoiFrame); imshow("MogMask", Mog_Mask); imshow("BackImg", BackImg); imshow("Morpho", Mog_Mask_morpho); if (waitKey(30) >= 0) break; } return 0; }..
#include < iostream> #include < opencv2\opencv.hpp> #include < opencv2\videoio.hpp> #include < opencv2\highgui.hpp> //#include < opencv2\core\cuda.hpp> #include < opencv2\core.hpp> //#include < opencv2\bgsegm.hpp> #include < opencv2\cudabgsegm.hpp> #ifdef _DEBUG #pragma comment(lib, "opencv_core300d.lib") #pragma comment(lib, "opencv_highgui300d.lib") #pragma comment(lib, "opencv_videoio300d.lib") #pragma comment(lib, "opencv_cudabgsegm300d.lib") #else #pragma comment(lib, "opencv_core300.lib") #pragma comment(lib, "opencv_highgui300.lib") #pragma comment(lib, "opencv_videoio300.lib") #pragma comment(lib, "opencv_cudabgsegm300.lib") #endif using namespace std; using namespace cv; int main() { // VideoCapture cap("M:\\____videoSample____\\blog\\video20.wmv"); //VideoCapture cap("M:\\____videoSample____\\posco\\cartype1.avi"); // Ptr< cuda::BackgroundSubtractorMOG2 > MOG2_g = cuda::createBackgroundSubtractorMOG2(3000, 64); Mat Mog_Mask; cuda::GpuMat Mog_Mask_g; // Mat o_frame; cuda::GpuMat o_frame_gpu; cap >> o_frame; if (o_frame.empty()) return 0; ///////////////////////////////////////////////////////////////////////// unsigned long AAtime = 0, BBtime = 0; //Mat rFrame; Mat showMat_r_blur; Mat showMat_r; namedWindow("origin"); namedWindow("mog_mask"); while (1) { ///////////////////////////////////////////////////////////////////////// cap >> o_frame; if (o_frame.empty()) return 0; o_frame_gpu.upload(o_frame); AAtime = getTickCount(); // MOG2_g->apply(o_frame_gpu, Mog_Mask_g, -1); //pMOG2_g.operator()(o_frame_gpu, Mog_Mask_g, -1); // Mog_Mask_g.download(Mog_Mask); BBtime = getTickCount(); float pt = (BBtime - AAtime) / getTickFrequency(); float fpt = 1 / pt; printf("gpu %.4lf / %.4lf \n", pt, fpt); o_frame_gpu.download(showMat_r); imshow("origin", showMat_r); imshow("mog_mask", Mog_Mask); ///////////////////////////////////////////////////////////////////////// if (waitKey(10) > 0) break; } MOG2_g.release(); return 0; }...
#include < time.h> #include < opencv2\opencv.hpp> #include < opencv2\gpu\gpu.hpp> #include < string> #include < stdio.h> #ifdef _DEBUG #pragma comment(lib, "opencv_core249d.lib") #pragma comment(lib, "opencv_imgproc249d.lib") //MAT processing #pragma comment(lib, "opencv_gpu249d.lib") #pragma comment(lib, "opencv_highgui249d.lib") #else #pragma comment(lib, "opencv_core249.lib") #pragma comment(lib, "opencv_imgproc249.lib") #pragma comment(lib, "opencv_gpu249.lib") #pragma comment(lib, "opencv_highgui249.lib") #endif #define RWIDTH 800 #define RHEIGHT 600 using namespace std; using namespace cv; int main() { ///////////////////////////////////////////////////////////////////////// gpu::MOG2_GPU pMOG2_g(30); pMOG2_g.history = 3000; //300; pMOG2_g.varThreshold =64; //128; //64; //32;//; pMOG2_g.bShadowDetection = true; Mat Mog_Mask; gpu::GpuMat Mog_Mask_g; ///////////////////////////////////////////////////////////////////////// VideoCapture cap("M:\\____videoSample____\\blog\\video20.wmv");//0); ///////////////////////////////////////////////////////////////////////// Mat o_frame; gpu::GpuMat o_frame_gpu; ///////////////////////////////////////////////////////////////////////// cap >> o_frame; if( o_frame.empty() ) return 0; ///////////////////////////////////////////////////////////////////////// unsigned long AAtime=0, BBtime=0; //Mat rFrame; Mat showMat_r_blur; Mat showMat_r; namedWindow("origin"); namedWindow("mog_mask"); while(1) { ///////////////////////////////////////////////////////////////////////// cap >> o_frame; if( o_frame.empty() ) return 0; o_frame_gpu.upload(o_frame); AAtime = getTickCount(); // pMOG2_g.operator()(o_frame_gpu, Mog_Mask_g,-1); // Mog_Mask_g.download(Mog_Mask); BBtime = getTickCount(); float pt = (BBtime - AAtime)/getTickFrequency(); float fpt = 1/pt; printf("gpu %.4lf / %.4lf \n", pt, fpt ); o_frame_gpu.download(showMat_r); imshow("origin", showMat_r); imshow("mog_mask", Mog_Mask); ///////////////////////////////////////////////////////////////////////// if( waitKey(10) > 0) break; } return 0; }
#include < stdio.h> #include < iostream> #include < opencv2\opencv.hpp> #include < opencv2/core/core.hpp> #include < opencv2/highgui/highgui.hpp> #include < opencv2/video/background_segm.hpp> #ifdef _DEBUG #pragma comment(lib, "opencv_core247d.lib") #pragma comment(lib, "opencv_imgproc247d.lib") //MAT processing #pragma comment(lib, "opencv_objdetect247d.lib") //HOGDescriptor //#pragma comment(lib, "opencv_gpu247d.lib") //#pragma comment(lib, "opencv_features2d247d.lib") #pragma comment(lib, "opencv_highgui247d.lib") #pragma comment(lib, "opencv_ml247d.lib") //#pragma comment(lib, "opencv_stitching247d.lib"); //#pragma comment(lib, "opencv_nonfree247d.lib"); #pragma comment(lib, "opencv_video247d.lib") #else #pragma comment(lib, "opencv_core247.lib") #pragma comment(lib, "opencv_imgproc247.lib") #pragma comment(lib, "opencv_objdetect247.lib") //#pragma comment(lib, "opencv_gpu247.lib") //#pragma comment(lib, "opencv_features2d247.lib") #pragma comment(lib, "opencv_highgui247.lib") #pragma comment(lib, "opencv_ml247.lib") //#pragma comment(lib, "opencv_stitching247.lib"); //#pragma comment(lib, "opencv_nonfree247.lib"); #pragma comment(lib, "opencv_video247d.lib") #endif using namespace cv; using namespace std; int main() { //global variables Mat frame; //current frame Mat resize_blur_Img; Mat fgMaskMOG2; //fg mask fg mask generated by MOG2 method Mat binaryImg; //Mat TestImg; Mat ContourImg; //fg mask fg mask generated by MOG2 method Ptr< BackgroundSubtractor> pMOG2; //MOG2 Background subtractor pMOG2 = new BackgroundSubtractorMOG2(300,32,true);//300,0.0); char fileName[100] = "mm2.avi"; //video\\mm2.avi"; //mm2.avi"; //cctv 2.mov"; //mm2.avi"; //";//_p1.avi"; VideoCapture stream1(fileName); //0 is the id of video device.0 if you have only one camera //morphology element Mat element = getStructuringElement(MORPH_RECT, Size(7, 7), Point(3,3) ); //unconditional loop while (true) { Mat cameraFrame; if(!(stream1.read(frame))) //get one frame form video break; //Resize resize(frame, resize_blur_Img, Size(frame.size().width/3, frame.size().height/3) ); //Blur blur(resize_blur_Img, resize_blur_Img, Size(4,4) ); //Background subtraction pMOG2->operator()(resize_blur_Img, fgMaskMOG2, -1);//,-0.5); /////////////////////////////////////////////////////////////////// //pre procesing //1 point delete //morphologyEx(fgMaskMOG2, fgMaskMOG2, CV_MOP_ERODE, element); morphologyEx(fgMaskMOG2, binaryImg, CV_MOP_CLOSE, element); //morphologyEx(fgMaskMOG2, testImg, CV_MOP_OPEN, element); //Shadow delete //Binary threshold(binaryImg, binaryImg, 128, 255, CV_THRESH_BINARY); //Find contour ContourImg = binaryImg.clone(); //less blob delete vector< vector< Point> > contours; findContours(ContourImg, contours, // a vector of contours CV_RETR_EXTERNAL, // retrieve the external contours CV_CHAIN_APPROX_NONE); // all pixels of each contours vector< Rect > output; vector< vector< Point> >::iterator itc= contours.begin(); while (itc!=contours.end()) { //Create bounding rect of object //rect draw on origin image Rect mr= boundingRect(Mat(*itc)); rectangle(resize_blur_Img, mr, CV_RGB(255,0,0)); ++itc; } /////////////////////////////////////////////////////////////////// //Display imshow("Shadow_Removed", binaryImg); imshow("Blur_Resize", resize_blur_Img); imshow("MOG2", fgMaskMOG2); if (waitKey(5) >= 0) break; } }
#include < stdio.h> #include < iostream> #include < opencv2\opencv.hpp> #include < opencv2/core/core.hpp> #include < opencv2/highgui/highgui.hpp> #include < opencv2/video/background_segm.hpp> #ifdef _DEBUG #pragma comment(lib, "opencv_core247d.lib") #pragma comment(lib, "opencv_imgproc247d.lib") //MAT processing #pragma comment(lib, "opencv_objdetect247d.lib") //HOGDescriptor //#pragma comment(lib, "opencv_gpu247d.lib") //#pragma comment(lib, "opencv_features2d247d.lib") #pragma comment(lib, "opencv_highgui247d.lib") #pragma comment(lib, "opencv_ml247d.lib") //#pragma comment(lib, "opencv_stitching247d.lib"); //#pragma comment(lib, "opencv_nonfree247d.lib"); #pragma comment(lib, "opencv_video247d.lib") #else #pragma comment(lib, "opencv_core247.lib") #pragma comment(lib, "opencv_imgproc247.lib") #pragma comment(lib, "opencv_objdetect247.lib") //#pragma comment(lib, "opencv_gpu247.lib") //#pragma comment(lib, "opencv_features2d247.lib") #pragma comment(lib, "opencv_highgui247.lib") #pragma comment(lib, "opencv_ml247.lib") //#pragma comment(lib, "opencv_stitching247.lib"); //#pragma comment(lib, "opencv_nonfree247.lib"); #pragma comment(lib, "opencv_video247d.lib") #endif using namespace cv; using namespace std; int main() { //global variables Mat frame; //current frame Mat resizeF; Mat fgMaskMOG; //fg mask generated by MOG method Mat fgMaskMOG2; //fg mask fg mask generated by MOG2 method Mat fgMaskGMG; //fg mask fg mask generated by MOG2 method Ptr< BackgroundSubtractor> pMOG; //MOG Background subtractor Ptr< BackgroundSubtractor> pMOG2; //MOG2 Background subtractor Ptr< BackgroundSubtractorGMG> pGMG; //MOG2 Background subtractor pMOG = new BackgroundSubtractorMOG(); pMOG2 = new BackgroundSubtractorMOG2(); pGMG = new BackgroundSubtractorGMG(); char fileName[100] = "C:\\POSCO\\video\\/cctv 2.mov"; //Gate1_175_p1.avi"; //mm2.avi"; //";//_p1.avi"; VideoCapture stream1(fileName); //0 is the id of video device.0 if you have only one camera Mat element = getStructuringElement(MORPH_RECT, Size(3, 3), Point(1,1) ); //unconditional loop while (true) { Mat cameraFrame; if(!(stream1.read(frame))) //get one frame form video break; resize(frame, resizeF, Size(frame.size().width/4, frame.size().height/4) ); pMOG->operator()(resizeF, fgMaskMOG); pMOG2->operator()(resizeF, fgMaskMOG2); pGMG->operator()(resizeF, fgMaskGMG); //morphologyEx(fgMaskGMG, fgMaskGMG, CV_MOP_OPEN, element); imshow("Origin", resizeF); imshow("MOG", fgMaskMOG); imshow("MOG2", fgMaskMOG2); imshow("GMG", fgMaskGMG); if (waitKey(30) >= 0) break; } }