refer to example source code
I also have introduced other background subtraction method in here.
http://feelmare.blogspot.kr/2014/04/opencv-study-background-subtractor-mog.html
..
#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("C:\\videoSample\\tracking\\sample.avi");//0);
/////////////////////////////////////////////////////////////////////////
Mat o_frame;
gpu::GpuMat o_frame_gpu;
gpu::GpuMat r_frame_gpu;
gpu::GpuMat rg_frame_gpu;
gpu::GpuMat r_frame_blur_gpu;
/////////////////////////////////////////////////////////////////////////
cap >> o_frame;
if( o_frame.empty() )
return 0;
vector< gpu::GpuMat> gpurgb(3);
vector< gpu::GpuMat> gpurgb2(3);
/////////////////////////////////////////////////////////////////////////
unsigned long AAtime=0, BBtime=0;
//Mat rFrame;
Mat showMat_r_blur;
Mat showMat_r;
while(1)
{
/////////////////////////////////////////////////////////////////////////
cap >> o_frame;
if( o_frame.empty() )
return 0;
o_frame_gpu.upload(o_frame);
gpu::resize(o_frame_gpu, r_frame_gpu, Size(RWIDTH, RHEIGHT) );
AAtime = getTickCount();
gpu::split(r_frame_gpu, gpurgb);
gpu::blur(gpurgb[0], gpurgb2[0], Size(3,3) );
gpu::blur(gpurgb[1], gpurgb2[1], Size(3,3) );
gpu::blur(gpurgb[2], gpurgb2[2], Size(3,3) );
gpu::merge(gpurgb2, r_frame_blur_gpu);
//
pMOG2_g.operator()(r_frame_blur_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 );
r_frame_gpu.download(showMat_r);
//rg_frame_gpu.download(showMat_rg);
r_frame_blur_gpu.download(showMat_r_blur);
imshow("origin", showMat_r);
//imshow("gray", showMat_rg);
imshow("blur", showMat_r_blur);
imshow("mog_mask", Mog_Mask);
/////////////////////////////////////////////////////////////////////////
if( waitKey(10) > 0)
break;
}
return 0;
}
..
how to compile and run this program on opeen cv
ReplyDelete...plzz suggest commands