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

拼搏现实的明天。 2023-01-01 03:54 362阅读 0赞

资源链接:https://gitee.com/liplip/mubiaojianceicon-default.png?t=L892https://gitee.com/liplip/mubiaojiance

一、课题介绍

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

  1. 实现功能

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

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

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

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

  1. GUI界面以及运行效果

v2-75bb91243f4894428bc94508da73e987\_b.jpg

v2-eaa31770d582a80d116958d65b262da6\_b.jpg

v2-093ee336bfa02ff78012e9112943d9b1\_b.jpg

v2-7790c140dcae3bd67fc2f775fcff22d5\_b.jpg

  1. 源码
  2. 视频读取

    [filename, cd1] = uigetfile( …

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

    if filename

    1. filename = [cd1,filename];
    2. video = vision.VideoFileReader(filename, 'ImageColorSpace', 'RGB');

    end
    axes(handles.axes1);
    set(gca,’Xtick’,[]);
    set(gca,’Ytick’,[]);
    box on;
    判定车道以及车速

    1. thresh = 120; % 判定左车道和右车道分届的阈值
    2. for n = 1 : size(bbox,1)

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

    1. pos = bbox(n,1) + bbox(n,3);
    2. if bbox(n,2) < 45 && bbox(n,2) > 35
    3. if pos < thresh && (size(left,1) == 0 || i - left(size(left,1)) > 4) % 记住刚进入的车
    4. left = [left;i];
    5. elseif (size(right,1) == 0 || i - right(size(right,1)) > 4)
    6. right = [right;i];
    7. end
    8. else
    9. fm = 30; % 视频帧率,参数可调,这里假设为30帧每秒
    10. len = 30; % 视频中路段的长度,参数可调,这里先定位100m
    11. if pos < thresh % 判断要开出该区域的车
    12. if bbox(n,2) > 85 && size(left,1) > 0
    13. vleft = i - left(1,1) + 2; % 这里计算左车道车速,帧数
    14. if vleft < 30 && vleft > 4 % 因为车速再慢也会大于一定速度
    15. left(1,:) = [];
    16. t = vleft/fm; % 计算实际时间 帧数/每秒帧数
    17. vleft = len/t; % 计算实际车速 距离/实际时间,vl为坐车道速度
    18. v1=v1+vleft;
    19. v1
    20. fprintf('左车道,车速: %f \n',vleft);
    21. set(handles.edit_speed,'string',strcat('左车道:',num2str(vleft)));
    22. else
    23. left(1,:) = [];
    24. end
    25. end
    26. else
    27. if bbox(n,2) > 80 && size(right,1) > 0
    28. vr = i - right(1,1); % 这里计算右车道的车速,这里还是帧数
    29. if vr < 35
    30. right(1,:) = [];
    31. t = vr/fm; % 计算实际时间 帧数/每秒帧数
    32. vr = len/t; % 计算实际车速 距离/实际时间
    33. v2=v2+vr
    34. fprintf('右车道,车速: %f \n',vr);
    35. set(handles.edit_speed,'string',strcat('右车道:',num2str(vr)));
    36. else
    37. right(1,:) = [];
    38. end
    39. end
    40. end
    41. end
  3. 车辆总数

    k=1;q=1;p=1;%初始化变量
    for j=1:(i-2) %对检测到的车辆进行求和

    1. if count(j)==0 & count(j+1)>0
    2. k=j+1;
    3. else if count(j)>0 & count(j+1)==0
    4. q=j;
    5. summ1=summ1+max(count(k:q));
    6. cheliang_jishu(p)=max(count(k:q));
    7. p=p+1;
    8. end
    9. end

    end

发表评论

表情:
评论列表 (有 0 条评论,362人围观)

还没有评论,来说两句吧...

相关阅读

    相关 MATLAB运动汽车跟踪计数检测GUI

    1、摘 要 当今科技飞速发展,带来了智能交通的空前发达,也为经济可持续发展做出一定贡献。交通运输在一个国家的经济社会发展中起着助推器的作用。交通运输的监控与管理智能化也变

    相关 MATLAB运动目标检测系统

    1  绪论 1.1 课题研究背景及意义 运动目标检测是图像处理与计算机视觉的一个分支,在理论和实践上都有重大意义,长久以来一直被国内外学者所关注。在实际中,视频监控利用摄像