基于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

相关推荐
AnalogElectronic10 分钟前
vue3 实现记事本手机版01
开发语言·javascript·ecmascript
Cx330❀11 分钟前
《C++ 继承》三大面向对象编程——继承:派生类构造、多继承、菱形虚拟继承概要
开发语言·c++
晨陌y13 分钟前
从 “不会” 到 “会写”:Rust 入门基础实战,用一个小项目串完所有核心基础
开发语言·后端·rust
筱砚.14 分钟前
【STL——set与multiset容器】
开发语言·c++·stl
Fanfffff72014 分钟前
从TSX到JS:深入解析npm run build背后的完整构建流程
开发语言·javascript·npm
Elias不吃糖19 分钟前
C++ 中的浅拷贝与深拷贝:概念、规则、示例与最佳实践(笔记)
开发语言·c++·浅拷贝·深拷贝
LEEBELOVED19 分钟前
R语言高效数据处理-3个自定义函数笔记
开发语言·笔记·r语言
朝新_21 分钟前
【SpringMVC】SpringMVC 请求与响应全解析:从 Cookie/Session 到状态码、Header 配置
java·开发语言·笔记·springmvc·javaee
2501_9387820922 分钟前
从实例到单例:Objective-C 单例类的线程安全实现方案
开发语言·macos·objective-c
浪裡遊23 分钟前
css面试题1
开发语言·前端·javascript·css·vue.js·node.js