【A169】基于Python+OpenCV虚拟线圈法的车速识别和撞线预测

2021-12-02 10:19:29      索炜达电子      672     

文件编号:A169

文件大小:38M

开发环境:Python3.7、OpenCV4.5

猿创承诺:该项目亲测正常运行,需远程调试部署需另外收费,确保正常使用,不能正常使用全额退款。

简要概述:项目的编程环境为python3.7.7,编译器使用pycharm2019.3.4 x64,视频序列30帧每秒。项目采用虚拟线圈法估算车速,取线圈内平均灰度值相对于没有车辆的线圈内平均灰度值的变化c作为对象特征,当c的绝对值大于某一阈值时,判断有汽车通过线圈。

基于虚拟线圈的车速检测算法

虚拟线圈法是利用虚拟感应线圈代替真实感应线圈,工作原理类似于地埋式线圈检测器。在图像上垂直于道路方向上定义2个检测线圈的位置,系统通过检测线圈的灰度变化来判断车辆经过,由车辆经过前后两个线圈的间隔帧数p、两个线圈在现实中的距离l和第二个线圈与停止线的距离s,可以估算出当前车辆的速度及撞线时间。该方法的优点是操作简单,耗时短,能够实时完成速度和撞线时间估计。算法的具体步骤如下:

1. 确定两个虚拟线圈的位置、大小和倾斜角度,确保首帧序列的虚拟线圈内没有车辆,在视频序列中把虚拟线圈标注出来;

2. 计算首帧序列在2个虚拟线圈中的平均灰度值,记为aaa、bbb;

3. 逐一计算视频帧在2个虚拟线圈中的平均灰度值,记为mmm、nnn,并与首帧的计算结果aaa、bbb进行比较。当∣m−a∣\left|m-a\right|∣m−a∣大于某一阈值时,判断第一个线圈有车辆通过,记录当前帧的序号iii,如图3-1所示,当∣n−b∣\left|n-b\right|∣n−b∣大于某一阈值时,判断第二个线圈有车辆通过,记录当前帧的序号jjj;

4. 当车辆通过第二个虚拟线圈时,由iii、jjj、实际现实中两虚拟线圈的间距、第二个虚拟线圈与停止线的间距和视频的帧率等信息,即可估算出车辆的车速和撞线时间。

总结

考虑到实际应用中,摄像头可以固定在道路中,稳定程度和角度都要好于我在楼顶手持录像,所以实际应用理论要好于实验。但也存在一些问题,比如对白色车辆不敏感,只是通过黑色后视窗进行识别,原因可能是特征选择为灰度图的平均灰度值差异,白色车辆跟道路的平均灰度值差异不够明显,改进的话可以使用SHV图像的颜色做判别,这也比较符合人的判断;比如实验视频时间短,只考虑白天,实际现实还要工作于夜晚,可以运用动态阈值进行改进。

按需写作:

【A169】基于Python+OpenCV虚拟线圈法的车速识别和撞线预测

演示视频:

【A169】基于Python+OpenCV虚拟线圈法的车速识别和撞线预测

点击查看:系统演示视频

运行结果:

【A169】基于Python+OpenCV虚拟线圈法的车速识别和撞线预测

【A169】基于Python+OpenCV虚拟线圈法的车速识别和撞线预测

远程协助:

温馨提示:索炜达.猿创官方提供收费远程协助,确保您项目运行成功。

点击查看:远程协助相关事项

我们提供完整项目文件清单如下:

文件目录

 ├ 1.项目源码

 ├ 2.运行截图

 └ 3.演示视频

TAG虚拟线圈法
  • 4 次
  • 600 分