计算视频内车辆速度差和拍摄者车辆与后方车辆之间距离-(2019年数学建模C题 视觉情报分析)

视频是别克英朗2016款车上乘客通过后视镜拍摄的,通过视频

(1)估算该车和后方红色车辆之间的距离

(2)估算该车超越第一辆白色车辆时两车的速度差异

视频提取地址
链接:https://pan.baidu.com/s/1hPSxrhds6bwxyV4BoUR6Bw
提取码:v78s

分析:根据乘客拍摄的视频,不难发现视频中车辆所在的国道,以及国道道路上白色虚线的标准长为多少,经过查阅,白色的车道标识为6米。然后我们对视频进行分帧操作,我是用python实现的,一秒钟大约30帧左右,然后再根据拍摄者车辆倒视镜的下沿为一个标准线,看拍摄者车辆经过若干白色标识的帧数为多少,进而求取平均值就可以得到拍摄者车辆的速度~~为了更加的直观我把分帧的图像给大家展示一下,这两组也是实验中表格内的前两组实验图。

任务一(估算该车超越第一辆白色车辆时两车的速度差异)
在这里插入图片描述
在这里插入图片描述
下面的表格是我做此次实验的结果:
拍摄者车辆经过白色车道线的帧差表如下所示
在这里插入图片描述
经过多次实验发现,拍摄者的汽车经过白色标识车道线所用的视频帧平均为7帧,已知,每秒产生30帧图像,又经过查阅,白色的车道标识为6米,大约经过的时间为7/30秒,则该小汽车的速度为(假设该车为匀速运动):v=s/t,带入数据 得 v1 = 25.72m/s

为了精确地得到拍摄者车辆的真实速度,减少误差,已知路面上的白色标识为6米,白色标识之间为3米(3米和6米,百度可查,国家规定距离),这次我们选择“9米 = 白色路面标识 + 白色标识之间的3米” 作为测试距离,同理根据车辆经过不同的这段距离用时多少帧,在换算成秒来求真实速度~~为了更加的直观我把分帧的图像给大家展示一下,这两组也是实验中表格内的前两组实验图。
在这里插入图片描述
在这里插入图片描述
下面的表格是实验的结果:
拍摄者车辆经过 白色标识车道线+白色标识线间隔 的帧差表如下所示
在这里插入图片描述
从实验数据来看,拍摄者车辆经过 9米 距离的路段,用时平均为10帧左右,则可得拍摄者的车辆速度为: v=s/t,其中 s 等于9,时间 t 为 10/30 = 1/3 秒,带入数据得 v2 = 27m/s

综上,已知上次的实验结果为 v1 = 25.72m/s ,结合这次的 v2 = 27m/s,对两次的实验结果取平均,最终可得到拍摄者车辆的速度为 26.36m/s

有了计算拍摄者车辆速度的方法,我们采取同样的措施,根据分帧后的视频,我们根据每一帧的图像发现,在第101帧拍摄者的车辆经过白色汽车车尾,在124帧经过白色汽车车头,一共用时 23 帧。
由公式 V1T - V2T = S 即可得到 V2(V2是经过的白色小车的速度),经过查阅资料(车型根据视频就可以断定什么车,即可得车长为多少),经过的白色小轿车车长 4.45 米,V1 为拍摄者的车辆速度 26.36m/s,时间 T为 23/30秒,S = 4.45米,最后可得 V2=20.56m/s
则两个车的速度差为:26.36-20.56=5.8m/s

任务二(估算该车和后方红色车辆之间的距离)

由任务一可知拍摄者车辆的速度和经过的白色小车的速度,现在我们来估算拍摄者车辆与后方红色车辆之间的距离。同样根据分帧处理后的视频图像,分析可得:从白色汽车经过拍摄者车辆到与红色车辆大致平行位置,经过了200帧(120帧到340帧,如下图所示:
在这里插入图片描述
大约 200/30 = 20/3秒,由任务一得到的速度差 5.8m/s 可得,拍摄车辆和红色小车的距离大约为 42.54 米。

视频分帧代码:

import cv2
vidcap = cv2.VideoCapture("car_car.mp4")
success,image = vidcap.read()
count = 0
success = True
while success:
    success,image = vidcap.read()
    cv2.imwrite("frame%d.jpg" % count, image) 
    if cv2.waitKey(10) == 27:
        break
    count += 1

(注:这里的时间换算单位:这是一个13秒的视频,对视频分帧后会得到连续的图像,一秒钟大概为30帧,所以这里的时间都除以 30 。任务二的估算误差比较大,全靠肉眼来分辨大概的位置。这是研究生数学建模比赛其中的一题,感兴趣的小伙伴可以去网上搜索其他的解法)

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勇敢牛牛@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值