2系统详细设计文档格式.docx
- 文档编号:16024202
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:14
- 大小:69.05KB
2系统详细设计文档格式.docx
《2系统详细设计文档格式.docx》由会员分享,可在线阅读,更多相关《2系统详细设计文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
里程碑
9月
项目启动、需求分析
10月上半月
系统的概要设计、系统详细设计
10月到十二月
完成白天黑夜流量统计系统
1月上半月
完成各种噪声所带来的对检测、识别的影响。
1月下半月
测试、部署
在以上这些条件下,系统要实现的目标是:
目的是实现系统的总体设计,明确系统的总体结构和数据结构,即划分出系统的功能模块,设计出系统的数据库数据结构,为下一步的对每个模块进行设计的详细设计工作提供依据,同时为系统的测试、修改和维护提供依据。
2.2设计原则和设计要求
一.设计原则
(1).独立性
每个模块只涉及软件要求的具体子功能
(2).易维护性
基于MFC开发,采用统一的编码规则和注释,便于系统开发和维护
(3).可扩展性
考虑到用户需求的多变性,采用易于扩展的软件架构,便于软件升级
二.设计要求
●需求规定:
1.系统打开视频序列界面:
2.人工划定感兴趣的区域(ROI):
3.模式选择(白天和黑夜):
4.跟踪界面:
5.流量统计界面:
3系统的软件构架
总系统构架:
4.系统主要模块功能以及代码
白天车流量统计:
voidCCarTrackSystemDlg:
:
Nightupdate_mhi(IplImage*img,IplImage*dst,intdiff_threshold)
{
/////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////夜间开始////////////////////////////////////////////////
doubletimestamp=clock()/1000.;
CvSizesize=cvSize(img->
width,img->
height);
inti,idx1=last,idx2;
IplImage*silh;
CvSeq*seq;
CvRectcomp_rect;
doublecount;
doubleangle;
CvPointcenter;
doublemagnitude;
CvScalarcolor;
if(!
mhi||mhi->
width!
=size.width||mhi->
height!
=size.height)
{
if(buf==0)
buf=(IplImage**)malloc(N*sizeof(buf[0]));
memset(buf,0,N*sizeof(buf[0]));
}
for(i=0;
i<
N;
i++)
cvReleaseImage(&
buf[i]);
buf[i]=cvCreateImage(size,IPL_DEPTH_8U,1);
cvZero(buf[i]);
mhi);
orient);
segmask);
mask);
mhi=cvCreateImage(size,IPL_DEPTH_32F,1);
cvZero(mhi);
orient=cvCreateImage(size,IPL_DEPTH_32F,1);
segmask=cvCreateImage(size,IPL_DEPTH_32F,1);
mask=cvCreateImage(size,IPL_DEPTH_8U,1);
cvCvtColor(img,buf[last],CV_BGR2GRAY);
//“灰度”
idx2=(last+1)%N;
last=idx2;
silh=buf[idx2];
cvAbsDiff(buf[idx1],buf[idx2],silh);
cvThreshold(silh,silh,diff_threshold,1,CV_THRESH_BINARY);
cvUpdateMotionHistory(silh,mhi,timestamp,MHI_DURATION);
//更新MHI
cvCvtScale(mhi,mask,255./MHI_DURATION,
(MHI_DURATION-timestamp)*255./MHI_DURATION);
cvZero(dst);
cvCvtPlaneToPix(mask,0,0,0,dst);
cvCalcMotionGradient(mhi,mask,orient,
MAX_TIME_DELTA,MIN_TIME_DELTA,3);
storage)
storage=cvCreateMemStorage(0);
else
cvClearMemStorage(storage);
//运动分割
seq=cvSegmentMotion(mhi,segmask,storage,timestamp,MAX_TIME_DELTA);
seq->
total;
if(i<
0){//对整幅图像操作
comp_rect=cvRect(0,0,size.width,size.height);
color=CV_RGB(255,255,255);
magnitude=100;
//画线长度以及圆半径的大小控制
else{
comp_rect=((CvConnectedComp*)cvGetSeqElem(seq,i))->
rect;
//去掉小的部分
if(comp_rect.width+comp_rect.height<
100)
continue;
color=CV_RGB(255,0,0);
//red色
magnitude=30;
///////if(seq->
total>
0)MessageBox(NULL,"
MotionDetected"
NULL,0);
//感性区域
cvSetImageROI(silh,comp_rect);
cvSetImageROI(mhi,comp_rect);
cvSetImageROI(orient,comp_rect);
cvSetImageROI(mask,comp_rect);
angle=cvCalcGlobalOrientation(orient,mask,mhi,timestamp,
MHI_DURATION);
angle=360.0-angle;
//在轮廓内计算点数
count=cvNorm(silh,0,CV_L1,0);
cvResetImageROI(mhi);
cvResetImageROI(orient);
cvResetImageROI(mask);
cvResetImageROI(silh);
if(count<
comp_rect.width*comp_rect.height*0.05)
center=cvPoint((comp_rect.x+comp_rect.width/2),
(comp_rect.y+comp_rect.height/2));
cvCircle(dst,center,cvRound(magnitude*1.2),color,3,CV_AA,0);
cvLine(dst,center,cvPoint(cvRound(center.x+
magnitude*cos(angle*CV_PI/180)),
cvRound(center.y-magnitude*sin(angle*CV_PI/180))),
color,3,CV_AA,0);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////结束/////////////////////////
}:
夜间车流量统计:
voidCCarTrackSystemDlg:
update_mhi(IplImage*img,IplImage*dst,intdiff_threshold)
{
doubletimestamp=clock()/100.;
//getcurrenttimeinseconds时间戳
CvPointpt3,pt4;
CvRectbndRect=cvRect(0,0,0,0);
//用cvBoundingRect画出外接矩形时需要的矩形
CvFontfont1;
//初始化字体格式
intlinetype=CV_AA;
//getcurrentframesize,得到当前帧的尺寸
intidx1,idx2;
IplImage*pyr=cvCreateImage(cvSize((size.width&
-2)/2,(size.height&
-2)/2),8,1);
CvMemStorage*stor;
CvSeq*cont
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 系统 详细 设计