基于MATLAB的运动车辆跟踪检测系统

基于MATLAB的运动车辆跟踪检测系统

一、课题介绍

本设计为基于MATLAB的运动车辆跟踪检测系统。带有一个GUI界面,可以读取高速路车流视频,读取视频信息,并且统计每辆车经过左车道还是右车道,车速和平均速度检测,以及某一帧下的车流密度,以及最后总共经过的车辆总数。将运动检测到的目标用方框框起来。是一个非常不错的选题。

二、实现功能

车流密度:一定时间内经过车辆的总数;

车流量:某一帧下的车辆数目;

车速:经过车辆的实时速度;

平均速度:所有车辆的平均速度;

三、GUI界面以及运行预期效果

GUI设计图

GUI运行效果图

四、主要源码

1、视频读取

[filename, cd1] = uigetfile( ...

    {'*.avi;*.mp4;'},'Pick an Video');

 

if filename

    filename = [cd1,filename];

    video = vision.VideoFileReader(filename, 'ImageColorSpace', 'RGB');

end

axes(handles.axes1);

set(gca,'Xtick',[]);

set(gca,'Ytick',[]);

box on;

2、判定车道以及车速

      thresh = 120;        % 判定左车道和右车道分届的阈值

 

 for n = 1 : size(bbox,1)          

           fprintf('y: %f \n',bbox(n,2));

           pos = bbox(n,1) + bbox(n,3);

 if bbox(n,2) < 45 && bbox(n,2) > 35

 if pos < thresh && (size(left,1) == 0 || i - left(size(left,1)) > 4)            % 记住刚进入的车

                   left = [left;i];    

 elseif (size(right,1) == 0 || i - right(size(right,1)) > 4)

                   right = [right;i];

 end

 else

               fm = 30;              % 视频帧率,参数可调,这里假设为30帧每秒

               len = 30;            % 视频中路段的长度,参数可调,这里先定位100m

 if pos < thresh             % 判断要开出该区域的车

 if bbox(n,2) > 85 && size(left,1) > 0

                      vleft = i - left(1,1) + 2;            % 这里计算左车道车速,帧数

 if vleft < 30 && vleft > 4                % 因为车速再慢也会大于一定速度

                          left(1,:) = [];

                          t = vleft/fm;                      % 计算实际时间  帧数/每秒帧数

                          vleft = len/t;                     % 计算实际车速   距离/实际时间,vl为坐车道速度                          

                          v1=v1+vleft;  

                          v1

                          fprintf('左车道,车速: %f \n',vleft);

                          set(handles.edit_speed,'string',strcat('左车道:',num2str(vleft)));

 else

                          left(1,:) = [];

 end

 end

 else

 if bbox(n,2) > 80 && size(right,1) > 0

                       vr = i - right(1,1);                        % 这里计算右车道的车速,这里还是帧数

 if vr < 35

                           right(1,:) = [];

                           t = vr/fm;                      % 计算实际时间  帧数/每秒帧数

                           vr = len/t;                     % 计算实际车速   距离/实际时间

                           v2=v2+vr                           

                           fprintf('右车道,车速: %f \n',vr);

                           set(handles.edit_speed,'string',strcat('右车道:',num2str(vr)));

 else

                           right(1,:) = [];

 end

 end

 end

 end

 

3、车辆计数

 for j=1:(i-2)    %对检测到的车辆进行求和

 if count(j)==0 & count(j+1)>0

             k=j+1;

 else if count(j)>0 & count(j+1)==0

             q=j;

             summ1=summ1+max(count(k:q));

             cheliang_jishu(p)=max(count(k:q));

             p=p+1;

 end

 end

 end

 

  • 14
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值