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

相关推荐
apcipot_rain4 小时前
C++转Java日记(04)
java·开发语言·c++
云和数据.ChenGuang5 小时前
LangGraph 异步 Node 的设计与写法实践
开发语言·人工智能·python·机器学习·php
蜗牛一步步往上爬8 小时前
第十六章 C++语言在深度学习中的应用
开发语言·c++·深度学习
张张123y10 小时前
DSH 插件调试避坑:client.js 设置面板、热重载与高频报错排查表
开发语言·javascript·人工智能·开源·ecmascript·后端开发·ai agent
冻柠檬飞冰走茶13 小时前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划
FRing0313 小时前
vue2干货总结7(自定义指令、插槽、单页应用程序、路由的使用(VueRouter))
开发语言·前端·vue.js·vue2
雪落漂泊14 小时前
C++算法 二分查找篇(上)
开发语言·c++·算法
波力海苔夹心脆67515 小时前
C# WPF 资源字典详解:ResourceDictionary、MergedDictionaries 与自定义控件案例
开发语言·c#·wpf·入门教程·resource·资源字典
不会算法的笨小孩15 小时前
异常的使用以及会出现的问题
开发语言·c++·c++11·异常
严肃小白兔17 小时前
MATLAB 数值计算中的精度与误差问题:浮点运算、误差传播与数值稳定性
人工智能·算法·matlab