欢迎来到天天文库
浏览记录
ID:13215712
大小:20.00 KB
页数:10页
时间:2018-07-21
《轮廓检测(contour detection)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、轮廓检测(Contourdetection)#包括“highgui。”#包括<<时间。”#包括<<数学。”#包括<<运算符。”#包括#包括<字符串。”//跟踪的参数(秒)/跟踪的参数(单位为秒)const双mhi_duration=0.5;//0.5s为运动跟踪的最大持续时间const双max_time_delta=0.5;const双min_time_delta=0.05;常量=3;//constintcontour_max_aera=1000;//环图像缓冲区圈出图像缓冲IplImage*buf=0;//指
2、针的指针int=0;//临时图像临时图像IplImage*MHI=0;//MHI:运动历史图像cvfilter过滤器=cv_gaussian_5x5;cvconnectedcomp*cur_comp,min_comp;cvconnectedcompCOMP;cvmemstorage*存储;cvpointPT[4];//参数://IMG–输入视频帧//DST–检测结果无效update_mhi(IplImage*img,IplImage*DST,intdiff_threshold){双时间戳=clock()/100。;/秒时间戳获得
3、当前时间cvsize大小=cvsize(IMG->宽度,IMG->高度);//获取当前帧的大小,得到当前帧的尺寸inti,IDX1、idx2;*SilHIplImage;他们cvcreateimage(cvsizeIplImage*=((size.width&-2)/2、(size.height&-2)/2),8,1);cvmemstorage*存储;cvseq*续;先进行数据的初始化/**/如果(!三菱
4、
5、MHI->宽度!=size.width
6、
7、MHI->高度!=size.height){如果(buf==0)/若尚没有初始化
8、则分配内存给他{buf=(IplImage**)malloc(N*sizeof(BUF[0]));memset(buf,0,N*sizeof(BUF[0]));}为(i=0;i<;;+(+)){cvreleaseimage(&buf[我]);但是[我]=cvcreateimage(大小、ipl_depth_8u,1);cvzero(BUF[我]);//明确的开始缓冲架}cvreleaseimage(与MHI);MHI=cvcreateimage(大小、ipl_depth_32f,1);cvzero(MHI);//清MHI在开始}
9、//结束如果(MHI)将当前要处理的帧转化为灰度放到缓冲的最后一帧中*//*cvcvtcolor(IMG,但[上],cv_bgr2gray);//将帧灰度设定帧的序号/**//*最后---->IDX1^
10、
11、
12、idx2<-----(上+1)%3*/IDX1=最后;idx2=(一+1)%N;//指数(最后第(n-1))框架最后,idx2;//做帧差但idx2SilH=[];//差值的指向idx2
13、idx2-idx1
14、-->idx2(<-SilH)cvabsdiff(BUF[IDX1],但[idx2],SilH);//帧之间的差//对
15、差图像做二值化cvthreshold(SilH,治愈型,30,255,cv_thresh_binary);//阈值,二值化cvupdatemotionhistory(SilH,MHI、时间戳、mhi_duration);//更新MHIcvconvert(MHI,DST);//将MHI转化为DST,DST=MHI//中值滤波,消除小的噪声cvSmooth(DST,DST,cv_median,3,0,0,0);cvpyrdown(DST,Pyr,cv_gaussian_5x5);//向下采样,去掉噪声,图像是原图像的四分之一cvDi
16、late(芘,芘,0,1);//做膨胀操作,消除目标的不连续空洞cvpyrup(Pyr、DST、cv_gaussian_5x5);//向上采样,恢复图像,图像是原图像的四倍////下面的程序段用来找到轮廓///创建动态结构和序列。(0)cvcreatememstorage故事=;续=cvcreateseq(cv_seq_eltype_point,sizeof(cvseq),sizeof(cvpoint),存储);//找到所有轮廓cvfindcontours(DST,存储和控制,sizeof(cvcontour),cv_retr_
17、list,cv_chain_approx_simple,cvpoint(0,0));//直接使用轮廓中的矩形来画轮廓为(;控制;控制=控制->h_next){cvrectR=((cvcontour*)续)->矩形;如果(r.height*r.width>cont
此文档下载收益归作者所有