基于opencv的背景减除方法

基于opencv的背景减除方法

ID:30445898

大小:56.54 KB

页数:5页

时间:2018-12-30

基于opencv的背景减除方法_第1页
基于opencv的背景减除方法_第2页
基于opencv的背景减除方法_第3页
基于opencv的背景减除方法_第4页
基于opencv的背景减除方法_第5页
资源描述:

《基于opencv的背景减除方法》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、基于OPENCV的背景减除方法openCV2009-04-2714:59:32阅读59评论0字号:大中小//经实验发现,用背景减除方法也可以针对某些摄像机运动的情况,而非像大部分文章中所提到的该方法仅仅适合于摄像机静止的情况,而且效果还要较好!!/**建立多高斯背景模型*/voidCMotionAnalysisPlatformView::OnBackgdiff(){  //TODO:Addyourcommandhandlercodehere  IplImage*tmp_frame=0;  IplImage*dst

2、=0;  if(!m_capture)  {    MessageBox("读取视频文件失败,请重新打开真彩色(24位)视频!","错误信息");    return;  }tmp_frame=cvQueryFrame(m_capture);dst=cvCreateImage(cvGetSize(tmp_frame),8,1);dst->origin=1;  if(!tmp_frame)  {    MessageBox("读取视频文件失败,请重新打开真彩色(24位)视频!","错误信息");    return

3、;  }  cvNamedWindow("背景图像",1);  cvNamedWindow("前景图像",1); //创建多高斯模型  CvBGStatModel*bg_model=cvCreateGaussianBGModel(tmp_frame);   for(intfr=1;tmp_frame;tmp_frame=cvQueryFrame(m_capture),fr++){ //printf("frame#%d:",fr); //获得背景模型更新过程所花费的时间,以CPU时钟/每微秒为单位计数 //doub

4、let=(double)cvGetTickCount(); //模型更新之前      cvUpdateBGStatModel(tmp_frame,bg_model); //真正的函数实现体是在:icvUpdateFGDStatModel(tmp_frame,bg_model)    //t=(double)cvGetTickCount()- t;  //模型更新之后//以左下角为坐标原点bg_model->foreground->origin=bg_model->background->origin=1;//c

5、vErode(bg_model->background,bg_model->background); //滤除噪声//cvErode(bg_model->foreground,bg_model->foreground);  //滤除噪声//printf("%.1f毫秒n",t/(cvGetTickFrequency()*1000.));//最后输出结果以毫秒为单位  cvShowImage("背景图像",bg_model->background);  cvCopy(bg_model->foreground,dst

6、);  cvSmooth(dst,dst,CV_GAUSSIAN,5);  cvMorphologyEx(dst,dst,0,0,CV_MOP_CLOSE,3);  cvMorphologyEx(dst,dst,0,0,CV_MOP_OPEN,1);//提取轮廓到contour序列中//cvFindContours仅能处理[单通道、颜色深度为8位的图像]的轮廓提取  cvFindContours(dst, m_storage,&m_contour,sizeof(CvContour),CV_RETR_LIST,CV

7、_CHAIN_APPROX_SIMPLE,cvPoint(0,0));  for(;m_contour!=0;m_contour=m_contour->h_next)  {     CvScalarcolor=CV_RGB(255,0,255);     CvScalarcolor_rect=CV_RGB(0,255,255);              m_contour_rect=cvBoundingRect(m_contour,1);/*if(m_contour_rect.height+m_contour_

8、rect.width>100&&m_contour_rect.width*m_contour_rect.height>20&&m_contour_rect.height/m_contour_rect.width>1.5)*/if(fabs(cvContourArea(m_contour))>500.0){cvRectangle(dst,cvPoint(m_contour_

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。