第一范文网 - 专业文章范例文档资料分享平台

系统详细设计

来源:用户分享 时间:2025/5/31 8:21:58 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

1.系统打开视频序列界面:

2.人工划定感兴趣的区域(ROI):

3.模式选择(白天和黑夜):

4.跟踪界面:

5.流量统计界面:

3系统的软件构架

总系统构架:

开始

视频采灰度化、平确定ROI 白天检测模式 车流量统

4.系统主要模块功能以及代码

白天车流量统计:

void CCarTrackSystemDlg::Nightupdate_mhi( IplImage* img, IplImage* dst, int diff_threshold ) {

?/////////////////////////////////////////////////////////////////////////////////////////////////////

?////////////////////////////////////// 夜间开始 ////////////////////////////////////////////////

double timestamp = clock()/1000.;

CvSize size = cvSize(img->width,img->height); int i, idx1 = last, idx2; IplImage* silh; CvSeq* seq; CvRect comp_rect; double count; double angle; CvPoint center;

double magnitude; CvScalar color;

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] ); }

cvReleaseImage( & mhi );

cvReleaseImage( & orient );

cvReleaseImage( & segmask );

cvReleaseImage( & 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 );

if( !storage )

storage = cvCreateMemStorage(0); else

cvClearMemStorage(storage);

// 运动分割

seq = cvSegmentMotion( mhi, segmask, storage, timestamp, MAX_TIME_DELTA );

for( i = 0; i < seq->total; i++ ) {

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,\tected\ULL,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 )

搜索更多关于: 系统详细设计 的文档
系统详细设计.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c0e4np1vq4s79ew80o94h77xpo584e200qwl_2.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top