希望您将使用 20 fps 到 30 fps 的简单相机,并且您的相机垂直于道路放置,但远离道路……物体,即您的汽车在图像平面上的最大速度为 8 ms-1。 .在您使用的镜头的帮助下计算图像平面中汽车的速度...
( speed in object plane / distance of camera from road ) = ( speed in image plane / focal length )
如果你知道每个像素测量多少,你应该以每秒像素为单位......
脚步...
您可以使用帧区分...即从前一帧中减去当前帧并取绝对差...阈值差...这将您的移动汽车从背景分割出来...记住这些部分都在移动对象......所以如果你想要一辆汽车而不是一个移动的人,你可以使用形状特征,即高度与宽度的比率......将一个矩形拟合到分段部分,并在每一帧中执行相同的步骤。因此,在每一帧中,您都可以记录边界框前缘的坐标......使用帧数、帧率和边界框前沿的坐标来计算速度...
您可以使用 goodfeaturestotrack 和 open cv 的光流...这样您就可以区分快速移动和缓慢移动的物体...但要不断刷新 goodfeaturestotrack 为您提供的点,否则任何进入相机视图的新车都不会被更新...记录goodfeaturestotrack在每一帧中选取的那组点的位移..也就是运动物体的位移...用同样的方法计算速度...计算速度的基本思路是记录对象在相机视野中持续存在的帧数...如果您的相机是固定的,那么您的视野也是如此...因此重要的是您能够捕捉到对象的帧数...记住....opencv的光流适用于跟踪缓慢移动的物体或更理论上的特征点(由要跟踪的好特征确定..)算法工作的2个连续帧之间的位移较小...大算法的位移会产生一些错误的预测......这就是为什么图像平面中的速度很重要......至少在定性上你应该对它有所了解......
注意:这两种方法都用于单个对象跟踪..对于多个对象跟踪,您需要进行一些修改...但是您可以从任何一种方法开始...我认为它会起作用..