高斯建模

Emgu 版本:

高斯建模高斯建模代码privatevoidbutton1_Click(objectsender, EventArgs e)

{

Emgu.CV.Capture cap
=newCapture("d:\1.wmv");

Emgu.CV.VideoSurveillance.BGStatModel
<Bgr>bg=null; ;

Capture c
=newCapture("d:\1.wmv");

Image
<Bgr,byte>img=null;

while((img=c.QueryFrame())!=null)

{

this.count++;

if(this.count==1)

{

bg
=newEmgu.CV.VideoSurveillance.BGStatModel<Bgr>(img,

Emgu.CV.CvEnum.BG_STAT_TYPE.GAUSSIAN_BG_MODEL);

}

else

{

//更新高斯模型

bg.Update(img);

this.pictureBox1.Image=img.Bitmap;

this.pictureBox2.Image=bg.BackgroundMask.Bitmap;

this.pictureBox3.Image=bg.ForgroundMask.Bitmap;

Application.DoEvents();

System.Threading.Thread.Sleep(
30);

}



}

}



C++版本:

高斯建模高斯建模代码intgaoshi(intargc,charargv)

{

IplImage
pFrame=NULL;

IplImage
pFrImg=NULL;

IplImage
pBkImg=NULL;

CvCapture
pCapture=NULL;

intnFrmNum=0;



cvNamedWindow(
"video",1);

cvNamedWindow(
"background",1);

cvNamedWindow(
"foreground",1);

cvMoveWindow(
"video",30,0);

cvMoveWindow(
"background",360,0);

cvMoveWindow(
"foreground",690,0);

if( argc>2)

{

fprintf(stderr,
"Usage: bkgrd [video_file_name]n");

return-1;

}





//打开视频文件

if(argc==2)

if(!(pCapture=cvCaptureFromFile(argv)))

{

fprintf(stderr,
"Can not open video file %sn", argv[1]);

return-2;

}

//打开摄像头

if(argc==1)

if(!(pCapture=cvCaptureFromCAM(-1)))

{

fprintf(stderr,
"Can not open camera.n");

return-2;

}



//初始化高斯混合模型参数

CvGaussBGModel
bg_model=NULL;



while(pFrame=cvQueryFrame( pCapture ))

{

nFrmNum
++;

if(nFrmNum<3)

continue;

if(nFrmNum==3)

{

pBkImg
=cvCreateImage(cvSize(pFrame->width, pFrame->height), IPL_DEPTH_8U,3);

pFrImg
=cvCreateImage(cvSize(pFrame->width, pFrame->height), IPL_DEPTH_8U,1);





//高斯背景建模,pFrame可以是多通道图像也可以是单通道图像

//cvCreateGaussianBGModel函数返回值为CvBGStatModel

//需要强制转换成CvGaussBGModel

bg_model=(CvGaussBGModel)cvCreateGaussianBGModel(pFrame,0);

}

else

{

//更新高斯模型

cvUpdateBGStatModel(pFrame, (CvBGStatModel
)bg_model );



//pFrImg为前景图像,只能为单通道

//pBkImg为背景图像,可以为单通道或与pFrame通道数相同

cvCopy(bg_model->foreground,pFrImg,0);

cvCopy(bg_model
->background,pBkImg,0);



//把图像正过来

pBkImg->origin=1;

pFrImg
->origin=1;



cvShowImage(
"video", pFrame);

cvShowImage(
"background", pBkImg);

cvShowImage(
"foreground", pFrImg);

if( cvWaitKey(2)>=0)

break;

}



}



//释放高斯模型参数占用内存

cvReleaseBGStatModel((CvBGStatModel**)&bg_model);

cvDestroyWindow(
"video");

cvDestroyWindow(
"background");

cvDestroyWindow(
"foreground");

cvReleaseImage(
&pFrImg);

cvReleaseImage(
&pBkImg);

cvReleaseCapture(
&pCapture);



}




原文链接: https://www.cnblogs.com/81/archive/2010/12/13/1904566.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/18716

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月7日 下午7:36
下一篇 2023年2月7日 下午7:37

相关推荐