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

相关推荐
身如柳絮随风扬22 分钟前
Java中的CAS机制详解
java·开发语言
韩立学长2 小时前
【开题答辩实录分享】以《基于Python的大学超市仓储信息管理系统的设计与实现》为例进行选题答辩实录分享
开发语言·python
froginwe112 小时前
Scala 循环
开发语言
m0_706653232 小时前
C++编译期数组操作
开发语言·c++·算法
故事和你913 小时前
sdut-Java面向对象-06 继承和多态、抽象类和接口(函数题:10-18题)
java·开发语言·算法·面向对象·基础语法·继承和多态·抽象类和接口
Bruk.Liu3 小时前
(LangChain实战2):LangChain消息(message)的使用
开发语言·langchain
qq_423233903 小时前
C++与Python混合编程实战
开发语言·c++·算法
m0_715575343 小时前
分布式任务调度系统
开发语言·c++·算法
csbysj20203 小时前
选择(Selectable)
开发语言
naruto_lnq3 小时前
泛型编程与STL设计思想
开发语言·c++·算法