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;
}
}