2024“华为杯”数模研赛E数据提取代码

news/2024/9/22 21:17:17

2024年数学建模研究生赛E题从视频中提取数据的代码。主要包括三个部分:车流量计算、各车道车流量计算和平均速度计算。主要讲述了代码的使用方法,包括需要修改的参数和文件路径,以及一些特殊情况的处理方法。同时还提供了参数估计和绘图的相关代码,以及如何根据不同视频视角调整代码。

代码链接

2024“华为杯”数模研赛E数据提取代码

首先需要将所有视频文件直接复制到文件夹目录下

计算车流量

核心代码为1.py,运行代码会生成x.x.txt,然后使用1-draw.py读取txt,绘制折线图

需要修改内容如下:

第8行

# 导入视频
txt_name='4.2.txt'
video_path = '4.2.mp4'  # 视频文件路径

修改对应的路径、视频编号。

第31行

# 设定通过线的位置
point2x=0
point2y=int(height*0.50)
point1x=width
point1y=int(height*0.45)

这是检测线的个端点,合适的参数请查看参数记录.txt的前半部分

1-draw.txt中的第6行

file_path = '1.1.txt'

修改成你需要绘制的视频编号

1-draw.txt中的第31行

window_size = 5

可稍作修改,建议5~20之间

各车道车流量计算

核心代码为三车道.py,绘图代码为三车道-draw.py

相比于普通的车流量计算,还需要修改车道线的划分。

第38行

# 车道划分
side1=int(width*0.25)
side2=int(width*0.4)

需要调整参数。合适的参数也在最佳参数.txt中,如:

1
point1x=0
point1y=int(height*0.2)
point2x=width
point2y=int(height*0.5)0.25 0.4

表示1系列视频需要调整两个划分线为0.25和0.4

三车道draw中的第46行

plt.plot(smoothed_total, label='总车流量')
plt.plot(smoothed_lane3, label='快车道车流量')
plt.plot(smoothed_lane2, label='慢车道车流量')
plt.plot(smoothed_lane1, label='应急车道车流量')

由于拍摄视角原因,可能需要交换“应急车道”和“快车道”,即变成

plt.plot(smoothed_total, label='总车流量')
plt.plot(smoothed_lane1, label='快车道车流量')
plt.plot(smoothed_lane2, label='慢车道车流量')
plt.plot(smoothed_lane3, label='应急车道车流量')

以画出图例正确的折线图

计算平均速度

估算k

使用代码标点.py启动视频,空格暂停,鼠标左键在画面中点击以生成坐标。请点击每辆车的前后两个轮子的位置。生成每行四个数据,复制到坐标\x.x.xlsx中,注意excel需要保留表头。

使用代码估算k.py读取excel表格,使用多项式以拟合函数\(k(x,y)\)

上述操作可以跳过,比较好的表达式已经保存在参数估计.txt的后半部分

计算速度

核心代码为速度.py,绘图代码为速度-draw.py

对于不同视角的视频,将k的表达式复制到核心代码的第12行

def calc_k(x,y):k = 3.5060369468e-01 + 2.4844164330e-04 * x + -1.6744365346e-03 * y + 4.2032717049e-07 * x ** 2 + -1.3060908122e-06 * y ** 2 + 2.4295921693e-06 * x * yreturn k

替换其中的k的表达式。

由于是计算速度,所以不需要管检测线和车道线,也就是说只需要修改视频文件路径k的表达式即可。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

用Eide下配合Cubemx配置stm32环境

PS:本篇为个人学习的记录,一是方便回忆,二是相同时方便给像我一样的小白一点建议。本文默认已安装好STM32Cubemx和VSCode,以及VsCode下的Eide Cubemx部分选择好需要使用的对应单片机创建工程。在Project Manager选项下 选择Toolchain/IDE下的makefile方式来创建工程。什么是…

USB2.0设备的休眠挂起及远程唤醒

USB可见设备状态,分为连接(Attached),上电(Powered),默认(Default),地址(Address),配置(Configured)和挂起(Suspended)6个状态。所谓可见,即USB系统和主机可见的状态,其他状态属于USB设备内部而不可见。其中有关电源的,大致可分下面三类:连接状态(Attached):设备连…

[CVPR2024]DeiT-LT Distillation Strikes Back for Vision Transformer Training on Long-Tailed Datasets

在长尾数据集上,本文引入强增强(文中也称为OOD)实现对DeiT的知识蒸馏的改进,实现尾部类分类性能的提升。 动机ViT相较于CNN缺少归纳偏置,如局部性(一个像素与周围的区域关系更紧密)、平移不变性(图像的主体在图像的任意位置都应该一样重要)。因此需要大型数据集进行预…

MobaXterm24.2 分析

MobaXterm 目录MobaXterm0、启动窗口 TForm11、TForm1_FormCreatedecrypt_9FDA481)xxBase64Decode_9FD80C2)DecryptBytes_9FD9DC2、许可结构1) Type2) version_info_3A83) user_limit4) Version5) unuse6)NoGames7)NoPlugins解析函数parse_9FEB5Cothersub_A03F80TFormAbout…

ABC372 F 题解

ABC372 F 题解F - Teleporting Takahashi 2 先把问题转化一下:把环断开成链,复制 \((K + 1)\) 层,每走一步就相当于前进一层:可以想到一个简单的 dp:设 \(f(i, j)\) 表示走到第 \(i\) 层第 \(j\) 个位置的方案数。初始化:\(f(0, 1) = 1\),其它均为 \(0\),表示 Takahash…

【做题笔记】收集邮票 做题笔记

水。P4550 收集邮票展开目录 目录P4550 收集邮票ReadingStep 1Step 2Code彩蛋Reading \(k\ge 1\) 时,可以通过支付 \(k\) 元钱获得一张 \(n\) 种邮票中的某种邮票。这 \(n\) 种邮票等概率出现,求买到全部 \(n\) 种邮票的花费期望。 Step 1 \(k\) 次 \(k\) 元太难搞了,干脆直…

单机版 ClickHouse 部署和 SpringBoot 程序访问

ClickHouse 是俄罗斯的 Yandex 于 2016 年开源的列式存储数据库(DBMS),使用C++语言编写,主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。 OLAP 为联机分析处理,专注于统计查询;OLTP 为联机事务处理,专注于增删改。 ClickHouse 的优势在于单表…