资源简介

用VS2010和OPENCV编写的关于视频烟雾检测的程序,运行效果很好。

资源截图

代码片段和文件信息

/****************************************************
* smoke detection
*
******************************************************/
#include 
#include 
#include 
#include 


int main(int argcchar** argv)
{
IplImage* pframe=NULL;
IplImage* pFrImg=NULL;
IplImage* pBkImg=NULL;

CvMat* pframeMat=NULL;
CvMat* pFrMat=NULL;
CvMat* pBkMat=NULL;

CvCapture* pCapture=NULL;

int nFrmNum=0;

cvNamedWindow(“video“1);
cvNamedWindow(“background“1);
cvNamedWindow(“foreground“1);

cvMoveWindow(“video“300);
cvMoveWindow(“background“3600);
cvMoveWindow(“foreground“6900);

if(argc>2)
{
fprintf(stderr“Usage:bkgrd [video_file_name]\n“);
return -1;
}

if(argc==1)
{
if(!(pCapture=cvCaptureFromCAM(-1)))
{
fprintf(stderr“Can not open camera.\n“);
return -2;
}
}
if(argc==2)
{
if(!(pCapture=cvCaptureFromFile(argv[1])))
{
fprintf(stderr“Can not open video file %s\n“argv[1]);
return -2;
}
}
while(pframe=cvQueryframe(pCapture))
{
nFrmNum++;
if(nFrmNum==1)
{
pBkImg = cvCreateImage(cvSize(pframe->width pframe->height)  IPL_DEPTH_8U1);
pFrImg = cvCreateImage(cvSize(pframe->width pframe->height)  IPL_DEPTH_8U1);
pBkMat = cvCreateMat(pframe->height pframe->width CV_32FC1);
pFrMat = cvCreateMat(pframe->height pframe->width CV_32FC1);
pframeMat = cvCreateMat(pframe->height pframe->width CV_32FC1);
//转化成单通道图像再处理
cvCvtColor(pframe pBkImg CV_BGR2GRAY);
cvCvtColor(pframe pFrImg CV_BGR2GRAY);
cvConvert(pFrImg pframeMat);   
cvConvert(pFrImg pFrMat);   
cvConvert(pFrImg pBkMat);
}
else
{
cvCvtColor(pframe pFrImg CV_BGR2GRAY);
cvConvert(pFrImg pframeMat);
//高斯滤波先,以平滑图像
cvSmooth(pframeMat pframeMat CV_GAUSSIAN 3 0 0);
//当前帧跟背景图相减
cvAbsDiff(pframeMat pBkMat pFrMat);
//二值化前景图  
cvThreshold(pFrMat pFrImg 12 255.0 CV_THRESH_BINARY);

//进行形态学滤波,去掉噪音  
cvErode(pFrImg pFrImg 0 1);
//cvDilate(pFrImg pFrImg 0 1);

//更新背景  
cvRunningAvg(pframeMat pBkMat 0.01 0);
//将背景转化为图像格式,用以显示  
cvConvert(pBkMat pBkImg);


//把图像正过来         
pBkImg->origin=1;         
pFrImg->origin=1; 

//显示图像
cvShowImage(“video“ pframe);
cvShowImage(“background“ pBkImg);
cvShowImage(“foreground“ pFrImg);
//如果有按键事件,则跳出循环
//此等待也为cvShowImage函数提供时间完成显示  
//等待时间可以根据CPU速度调整  
if( cvWaitKey(2) >= 0 )     
break;
}
}
//销毁窗口  
cvDestroyWindow(“video“); 
cvDestroyWindow(“background“); 
cvDestroyWindow(“foreground“);
//释放图像和矩阵  
cvReleaseImage(&pFrImg);  
cvReleaseImage(&pBkImg);
cvReleaseMat(&pframeMat); 
cvReleaseMat(&pFrMat);  
cvReleaseMat(&pBkMat);   
cvReleaseCapture(&pCapture);  
return 0;
}


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

     文件       2997  2009-03-27 14:09  smokedetection\bkgrd.cpp

     文件       3342  2013-08-07 14:52  smokedetection\connected_component.cpp

     文件       1113  2013-08-07 14:52  smokedetection\connected_component.h

     文件       7875  2009-05-06 16:30  smokedetection\gmm.cpp

     文件    1266476  2012-11-24 18:03  smokedetection\jie001.avi

     文件      11410  2013-08-14 09:32  smokedetection\smoke detection.cpp

     文件       8764  2009-05-06 16:26  smokedetection\smoke detection1.cpp

     文件      10673  2009-05-06 16:35  smokedetection\smoke detection2.cpp

     文件       4753  2013-05-27 22:49  smokedetection\smokedetection.dsp

     文件        553  2009-03-26 14:43  smokedetection\smokedetection.dsw

     文件      66560  2013-05-27 22:49  smokedetection\smokedetection.ncb

     文件      50688  2013-05-27 22:49  smokedetection\smokedetection.opt

     文件        262  2013-05-27 22:48  smokedetection\smokedetection.plg

     文件        894  2013-08-17 20:27  smokedetection\smokedetection.sln

    ..A..H.     14336  2013-08-17 20:29  smokedetection\smokedetection.suo

     文件       7196  2013-08-17 20:27  smokedetection\smokedetection.vcxproj

     文件       1340  2013-08-07 14:48  smokedetection\smokedetection.vcxproj.filters

     文件        378  2013-08-07 15:13  smokedetection\smokedetection.vcxproj.user

     文件       3360  2013-08-14 09:31  smokedetection\swavelet.cpp

     文件        181  2009-03-30 11:40  smokedetection\swavelet.h

     文件       3866  2013-08-17 20:27  smokedetection\Debug\cl.command.1.tlog

     文件     157220  2013-08-17 20:27  smokedetection\Debug\CL.read.1.tlog

     文件       2424  2013-08-17 20:27  smokedetection\Debug\CL.write.1.tlog

     文件          2  2013-08-17 20:28  smokedetection\Debug\link-cvtres.read.1.tlog

     文件          2  2013-08-17 20:28  smokedetection\Debug\link-cvtres.write.1.tlog

     文件          2  2013-08-17 20:28  smokedetection\Debug\link.5616-cvtres.read.1.tlog

     文件          2  2013-08-17 20:28  smokedetection\Debug\link.5616-cvtres.write.1.tlog

     文件          2  2013-08-17 20:28  smokedetection\Debug\link.5616.read.1.tlog

     文件          2  2013-08-17 20:28  smokedetection\Debug\link.5616.write.1.tlog

     文件       4480  2013-08-17 20:28  smokedetection\Debug\link.command.1.tlog

............此处省略33个文件信息

评论

共有 条评论