資源簡介
基于opencv的視頻圖像背景差分算法例子
代碼片段和文件信息
#include?“highgui.h“
#include?“cv.h“
#include?
#include“example.h“?
int?main(int?argcchar**argv)
{
//聲明指針,矩陣
IplImage*image=NULL;??
IplImage*backimage=NULL;
IplImage*foreimage=NULL;
IplImage*tank=NULL;
CvMat*imagemat=NULL;
CvMat*foremat=NULL;
CvMat*backmat=NULL;
CvCapture*capture=NULL;
int?num=0;
//創(chuàng)建窗口
cvNamedWindow(“cvcamwindow“CV_WINDOW_AUTOSIZE);
cvNamedWindow(“foreground“1);
cvNamedWindow(“background“1);
cvNamedWindow(“wo“1);
//讀取攝像頭
if(argc==1||(argc==2&&strlen(argv[1])==1&&isdigit(argv[1][0])))
capture=cvCaptureFromCAM(argc==2?argv[1][0]-‘0‘:0);
??else?if(argc==2)
??capture=cvCaptureFromAVI(argv[1]);
????
//聲明視頻結(jié)構(gòu)
int?isColor?=?1;
int?frameW=160;
int?frameH=120;
int?fps=8;
???CvVideoWriter*?camWriter=cvCreateVideoWriter(“E:\\directx\\jianhua12.avi“-1fpscvSize(frameWframeH)isColor);
?if(!capture)
??{
??fprintf(stderr“could?not?initialize?capturing...\n“);
??????????return?0;
??????}
//處理圖像
??while(image=cvQueryframe(capture))
??{
??num++;
??if(num==1)//第一針申請內(nèi)存
??{?
foreimage=cvCreateImage(cvGetSize(image)81);
?????backimage=cvCreateImage(cvGetSize(image)81);
????????????tank=cvCreateImage(cvGetSize(image)83);
????????????backmat=cvCreateMat(image->heightimage->widthCV_32FC1);
????????????foremat=cvCreateMat(image->heightimage->widthCV_32FC1);
????????????imagemat=cvCreateMat(image->heightimage->widthCV_32FC1);
?//轉(zhuǎn)換成單通道處理
?cvCvtColor(imagebackimageCV_BGR2GRAY);
????????cvCvtColor(imageforeimageCV_BGR2GRAY);
????????????//矩陣初始化
?cvConvert(foreimageforemat);
????????????cvConvert(foreimagebackmat);
????????????cvConvert(foreimageimagemat);
??????????}
??else
??{
??cvCvtColor(imageforeimageCV_BGR2GRAY);
??cvConvert(foreimageimagemat);
??
??//高斯濾波,平滑圖像
??cvSmooth(im
評論
共有 條評論