智慧交通(代码实现案例)

1.项目简介

目标:

  • 了解智慧交通项目的架构
  • 知道智慧交通项目中的模块
  • 能够完成智慧交通项目的环境搭建

该项目是智慧交通项目,通过该项目掌握计算机视觉的方法在交通领域的相关应用,包括车道线检测的方法,多目标车辆追踪及流量统计方法

  • 多目标车辆追踪和计数:SORT算法,匈牙利算法,卡尔曼滤波,虚拟线圈等
  • 车道线检测:张氏相机校正,仿射变换等

汽车的日益普及在给人们带来极大便利的同时,也导致了拥堵的交通路况,以及更为频发的交通事故。智能交通技术已成为推动现代技术交通技术发展的重要力量,智能交通不仅能够提供实时的交通路况信息,帮助交通管理者规划管理策略,而且还能优化出行者的出行策略。还可以减轻交通道路的堵塞情况,降低交通事故的发生概率,提高道路运行的安全系数。

本项目分两个模块:

  • 一个是基于视频的车辆跟踪及流量统计,是一个可跟踪路面实时车辆通行状况,并逐帧记录不同行车道车流量数目的深度学习项目,在视频中可看出每个车辆的连续帧路径,该项目可拓展性强,可根据企业业务外接计费结算系统、LED显示系统、语音播报系统、供电防雷系统等,

  • 另一个是车道线检测项目,是实现自动驾驶的首要任务,广泛应用于自动驾驶厂家,能够根据车载摄像头的输入,对安全驾驶区域进行预判,提醒驾驶员进行安全驾驶,减少交通事故的发生。

该项目的架构图如下所示:

  • 用户层:通过摄像头或人工选择视频送入服务层中进行处理,处理完成后可输出经渲染后的视频,或触发报警装置
  • 服务层:主要包含两个模块,
    • 一是车辆追踪及计数,该模块模块一对输入的视频进行处理,使用yoloV3模型进行目标检测,然后使用SORT进行目标追踪,使用卡尔曼滤波器进行目标位置预测,并利用匈牙利算法对比目标的相似度,完成车辆目标追踪,利用虚拟线圈的思想实现车辆目标的计数,并根据计数完成车道拥堵的判断;
    • 另一个是车道线的检测,该模块使用张氏较正法对相机进行较正,利用较正结果对图像去畸变,然后利用边缘与颜色提取车道线,利用仿射变换转换成鸟瞰图,并利用直方图滑动窗口的算法精确定位车道线,利用最小二乘法进行拟合,实现车道线的检测,并计算车辆偏离车道中心的距离,触发报警装置。
  • 效果展示

2.环境安装

该项目中使用的工具包包含以下:

NumPy 是使用 Python 进行科学计算的基础包。

Numba 是一个开源 JIT 编译器,它将 Python 和 NumPy 代码的子集转换为快速机器码。

SciPy 是数学、科学和工程的开源软件。SciPy 库依赖于 NumPy,它提供方便快捷的 N 维数组操作。

h5py 从 Python 读取和写入 HDF5文件。

pandas 用于数据分析、时间序列和统计的强大的数据结构。

opencv-python 用于 Python 的预构建 OpenCV 包。

moviepy 用于进行视频处理的工具包

Filterpy 实现了卡尔曼滤波器和粒子滤波器等

具体版本见requirements文件中。

安装方法:

​
# 创建虚拟环境
conda create -n dlcv python==3.8
# 激活虚拟环境
conda activate dlcv
# 安装对应的工具包
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple​

  1. 智慧交通中包含两个模块:多目标车辆跟踪及流量统计和车道线检测

  2. 智慧交通项目分为用户层和服务层,用户层进行视频或摄像头的操作,服务层对视频进行处理,完成多目标车辆的跟踪及车流量的统计和车道线检测

# 3.算法原理

该项目中主要包含车道线检测和车辆追踪与计数的模块,使用的算法主要有SORT/DeepSORT,卡尔曼滤波,匈牙利算法以及在车道线检测中使用的张氏校正法,项目主要分以下几个部分进行介绍:

- 多目标追踪
- SORT/DeepSort
- 卡尔曼滤波
- 匈牙利算法
- 相机校正
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/773350.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

t检验原理

t检验是一种常用的统计方法,用于比较两个样本均值是否有显著差异。它的基本原理是通过计算样本均值之间的差异,以及这种差异相对于样本误差的大小来判断差异是否显著。 t检验的基本步骤如下: 1. 假设两个样本是独立、随机抽取的,…

Linux Tomcat的服务器如何查看接口请求方式?

问题描述 最近在和安卓开发对接接口,遇到一个接口总是报405错误,有对接经验的开发应该都知道是请求方式不对,假如接口定义为POST请求的,但是客户端却用GET请求,这时候就会报这个错误。Android客户端那边使用xUtils框架…

Python 中处理JSON文件的方法

用 Python 读取、写入和操作 JSON 文件 JSON(JavaScript Object Notation)是一种流行的数据交换格式,易于人类阅读和编写。在编程领域中,与网络API或HTTP请求交互时经常会用到 JSON。Python 通过 json 模块提供了对 JSON 文件的内…

六-容量管理之相关工具

容量管理是一种综合性的事项,其中涉及多种相关工具和技术,常用的工具有: 压测平台(压力/脚本/数据)监控平台(Log/Trace/Metrics)发布平台 (CI/CD/弹性伸缩)预案平台 (限流/降级/容量…

【小白入门篇3】还是GPT4更香

上一节文章《【小白入门篇2】总有一款AI工具适合你》介绍了很多ai产品给大家,有同学私信我,国内工具还是比较差,还是想用gpt4模型。这个章节介绍一些gpt4工具给大家, 其中大部分都只有一些免费的次数, 而且都需要kx上网才能访问。 OpenAI ch…

浙大版《C语言程序设计(第4版)》题目集-练习4-7 求e的近似值

自然常数 e 可以用级数 1 1 / 1 ! 1 / 2 ! ⋯ 1 / n ! ⋯ 11/1!1/2!⋯1/n!⋯ 11/1!1/2!⋯1/n!⋯来近似计算。本题要求对给定的非负整数 n,求该级数的前 n1 项和。 输入格式: 输入第一行中给出非负整数 n(≤1000)。 输出格式: 在一行…

记录一下安装ubuntu子系统的pycharm遇到的问题

sudo su #切换为root用户获取管理员权限用于新建用户 adduser username #新建用户(例如用户名为username) adduser username sudo #将用户添加到 sudo 组同样遇到这个问题,解决方法是:先新建一个用户名,然后再切换到这…

Android 性能优化实例分享-内存优化 兼顾效率与性能

背景 项目上线一段时间后,回顾重要页面 保证更好用户体验及生产效率,做了内存优化和下载导出优化,具体效果如最后的一节的表格所示。 下面针对拍摄流程的两个页面 预览页 导出页优化实例进行介绍: 一.拍摄前预览页面优化 预览效果问题 存在…

Quartus II仿真出现错误

ModelSim executable not found in D:/intelFPGA/18.0/quartus/bin64/modelsim_ase/win32aloem/ Error. 找不到modelsim地址,原来是我下载了.exe,但没有双击启动安装ase文件夹呀!!!!晕,服了我自己

【Python百日进阶-Web开发-Peewee】Day288 - Peewee 的扩展(七)shortcuts / 信号支持

文章目录 13.13 快捷模式 Shortcutsmodel_to_dictdict_to_modelupdate_model_from_dictresolve_multimodel_queryclass ThreadSafeDatabaseMetadata 13.14 信号支持 Signal support13.14.1 连接处理程序 Connecting handlers13.14.2 信号 APIclass Signal 13.13 快捷模式 Short…

Python7:接口自动化学习1 RPC

API(Application Programmming Interface) 应用编程接口,简称“接口” 接口:程序之间约定的通信方法 特点:约定了调用方法,以及预期的行为,但是不透露具体细节 意义:程序能解耦&…

【No.20】蓝桥杯简单数论下|寻找整数|素数的判断|笨小猴|最大最小公倍数|素数筛|埃氏筛|欧氏线性筛|质数|分解质因子(C++)

寻找整数 【题目描述】 有一个不超过 1 0 1 7 10^17 1017的正整数n,知道这个数除以2至49后的余数如下表所示,求这个正整数最小是多少 解法一:模拟 暴力法:一个个检验 1 … 1 0 17 1\dots 10^{17} 1…1017的每个数 由于这个数n…

【pytest、playwright】构建POM项目,以及解决登录问题,allure环境问题

目录 前言 1、文件目录 2、安装依赖 3、POM项目实战-案例:打开指定页面 目录结构: pages中的代码: cases中的代码: 4、解决登录问题 问题: 解决方案: 获取登录的用户信息(cookie&a…

DasViewer电脑客户端打开文件夹时,一直显示崩溃,该怎么解决?

问题如图 如若用的是DasViewer V3.2.4Beta版本,可以换回3.2.1版本进行尝试。 DasViewer是由大势智慧自主研发的免费的实景三维模型浏览器,采用多细节层次模型逐步自适应加载技术,让用户在极低的电脑配置下,也能流畅的加载较大规模实景三维模型,提供方便快捷的数据浏…

发送请求- header配置

请求头里是客户端的要求,把你的诉求告诉服务端,服务端按照你的要求返回数据 , 请求header需要严格全配置,把请求header全部传入,不能频繁访问,让后端知道它是正常请求 一般只配置User-Agent和Content Typ…

vue如何将对象中不为空的键值对拼接到地址栏后面

在我们日常开发中,在调get接口时,需要按照https://mp.fbwz.net/mp_blog/creaton/editor?not_checkout1&not_checkon2,这种类型进行调接口,那么我们需要把对象中那些不为空的参数拼接成此类型,可以使用以下方法&am…

云原生靶场kebernetesGoat、Metarget

靶场 文章目录 靶场kebernetesGoat靶场安装Docker in DockerSSRF漏洞容器逃逸到主系统Docker CIS 基线分析Kubernetes CIS 安全基线分析分析被部署挖矿软件的容器镜像获取环境信息Hidden in layersRBAC最低权限配置错误使用 Sysdig Falco 进行运行时安全监控和检测 Metarget ke…

flutter 保存一堆多语言翻译词条,由key和value组成

原理&#xff1a; 1.从String列表里面获取某个value&#xff1a; List<String> jsonStrings [{"name": "John", "age": 30},{"name": "Jane", "age": 25},{"name": "Bob", "age…

iOS App 上架指南及关键

引言 上架App Store是将iOS应用提交申请并上线的过程&#xff0c;旨在让应用在App Store上展示&#xff0c;吸引用户并获取流量。本文将介绍iOS上架的整体流程&#xff0c;并提供一些建议和注意事项。 一、iOS上架的整体流程 1. 申请开发者账号 首先&#xff0c;需要申请苹…

网络入门基础:从零开始了解互联网世界

随着互联网技术的飞速发展&#xff0c;网络已经成为我们生活中不可或缺的一部分。无论是工作、学习还是娱乐&#xff0c;网络都扮演着重要的角色。然而&#xff0c;对于初学者来说&#xff0c;网络世界可能显得复杂而陌生。本文旨在为大家提供一个网络入门基础的指南&#xff0…