资源简介

VIBE前景检测方法,老外09年提出的新背景建模方法,速度比混合高斯背景模型提高几倍,检测效果也好于混合高斯模型。该包中包含了基本原理以及算法源代码。

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include
#include 
#include 
#include
#include
#include “vibeRely.h“

using namespace std;
using namespace cv;
    

int nFrmNum = 0;//记录帧数

int main(int argc char* argv[])
{
clock_t startTime;
clock_t endTime;
    double duration;

IplImage* pframe=NULL;CvMat* pframeMat = NULL;//pframe对象
IplImage* pAfter=NULL;CvMat* pAfterMat=NULL;//保存pframe对应的灰度图像
IplImage* segMap=NULL;CvMat* segMat=NULL;//保存处理后的信息
IplImage* bframe=NULL;
RNG rng(0xFFFFFFFF);         //创建一个随机数生成器
    char pBuf[100];
_getcwd(pBufsizeof(pBuf));  //获得当前工程所在路径
strcat(pBuf“\\View.avi“);   //pbuf为当前工程目录下的需要读取的视频文件


//打开视频文件
CvCapture* pCapture=cvCreateFileCapture(pBuf);
if(pCapture==NULL) {
cout<<“video file open error!“< return -1;
}


CvSize pSize=cvSize((int)cvGetCaptureProperty(pCaptureCV_CAP_PROP_frame_WIDTH)(int)cvGetCaptureProperty(pCaptureCV_CAP_PROP_frame_HEIGHT));

cvNamedWindow(“src“CV_WINDOW_AUTOSIZE);
cvMoveWindow(“src“  100200);
cvNamedWindow(“dst“CV_WINDOW_AUTOSIZE);
cvMoveWindow(“dst“500200);



//逐帧读取视频并进行处理
while(pframe = cvQueryframe( pCapture )){     
nFrmNum++;
startTime = clock();
//如果是第一帧,申请内存并进行初始化
if(nFrmNum==1){
segMap = cvCreateImage(cvSize(pframe->width pframe->height) 
IPL_DEPTH_8U1);
segMat = cvCreateMat(pframe->height pframe->width CV_32FC1);
//原始图像的灰度图
pAfter=cvCreateImage(cvSize(pframe->width pframe->height) 
IPL_DEPTH_8U1);
// 原始图像灰度图矩阵
pAfterMat=cvCreateMat(pframe->height pframe->width CV_32FC1);

//转化成单通道图像再处理
cvCvtColor(pframe pAfter CV_BGR2GRAY);
cvConvert(pAfter pAfterMat);
Initialize(pAfterMatrng);
}
else {

IplConvKernel * myModel;
myModel=cvCreateStructuringElementEx(3311CV_SHAPE_CROSS);
cvCvtColor(pframepAfterCV_BGR2GRAY);
cvConvert(pAfterpAfterMat);
update(pAfterMatsegMatrngnFrmNum);      //更新背景
cvConvert(segMatsegMap);
//cvErode( segMapsegMapmyModel1);
   // cvDilate(segMapsegMap NULL1);
cvReleaseStructuringElement(&myModel);

}
endTime = clock();
cvShowImage(“src“pframe);  
cvShowImage(“dst“segMap);  
        cvWaitKey(1);
duration = (double)(endTime-startTime)/CLOCKS_PER_SEC*1000;    //计算该次循环所以时间
cout<     
}

cvReleaseImage(&pframe);cvReleaseMat(&pframeMat);
cvReleaseImage(&pAfter);cvReleaseMat(&pAfterMat);
cvReleaseImage(&segMap);cvReleaseMat(&segMat);
cvDestroyWindow(“dst“);
cvDestroyWindow(“src“);
return 0;

}



 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件    2633344  2013-01-17 19:00  VIBE\ViBe-a universal background subtraction algorithm for video sequences.pdf

     文件     422400  2015-05-16 16:29  VIBE\ViBe运动物体检测.doc

     文件    4685282  2015-05-18 18:16  VIBE\测试视频\View.avi

     文件       2836  2015-07-09 16:00  VIBE\源码\Target_Main.cpp

     文件       2781  2015-07-09 16:00  VIBE\源码\vibeRely.cpp

     文件        518  2015-05-17 15:25  VIBE\源码\vibeRely.h

     目录          0  2015-07-09 16:03  VIBE\测试视频

     目录          0  2015-07-09 16:03  VIBE\源码

     目录          0  2015-07-09 16:11  VIBE

     文件    2633344  2013-01-17 19:00  VIBE\相关文档\ViBe-a universal background subtraction algorithm for video sequences.pdf

     文件     422400  2015-05-16 16:29  VIBE\相关文档\ViBe运动物体检测.doc

     文件        205  2015-07-09 16:11  VIBE\说明.txt

     目录          0  2015-07-09 16:11  VIBE\相关文档

----------- ---------  ---------- -----  ----

             10803110                    13


评论

共有 条评论