OpenCV使用相机连续测量速度

Ind*_*ngh 3 camera opencv tracking

我是OPENCV的新手,所以如果我在这里缺少简单的东西,请耐心等待.

我正在尝试制定一个基于摄像头的系统,该系统可以通过以下假设连续输出车辆的速度:1.摄像机水平放置,车辆经过相机镜头3到5英尺附近.2.速度不会超过30KM /小时

我希望从光学鼠标的概念开始,它检测表面图案中的位移.但是我不清楚当车辆开始进入车架时如何处理背景.

有两种方法我对实验感兴趣,但我正在寻找进一步的输入.

  1. 在车辆进入车架并与背景分离时检测车辆.
  2. 使用cvGoodFeaturesToTrack查找车辆上的点.
  3. 跟踪下一帧的点.&使用Lucas_Kanade金字塔函数计算光流的水平速度.
  4. 重复

请提出更正和修正建议.此外,我请求更有经验的成员帮助我有效地编写此过程,因为我不知道哪个是最正确的函数在这里使用.

提前致谢.

rot*_*age 5

希望你能使用一个20 fps到30 fps的简单相机,你的相机垂直于道路但远离它......对象即你的车在图像平面上的最大速度为8 ms-1. .借助你正在使用的镜头计算汽车在图像平面上的速度......

  ( speed in object plane / distance of camera from road ) = ( speed in image plane / focal length )
Run Code Online (Sandbox Code Playgroud)

如果你知道每个像素测量多少,你应该以每秒像素为单位...

脚步...

  1. 您可以使用帧差异...即从前一帧中减去当前帧并获取绝对差值...阈值差异...这会将您的移动车从后方分割出来......记住这些段都是移动的对象......所以,如果你想要一辆汽车而不是一个活动的人,你可以使用高度与宽度比的形状特征......将一个矩形拟合到分段的部分,并在每个框架中执行相同的步骤.因此,在每个框架中,您可以记录边界框前缘的坐标...当汽车进入视图时,直到它从视图中传出,您知道汽车持续了多长时间...使用帧数,帧速率和边界框前沿的坐标来计算速度......

  2. 你可以使用goodfeaturestotrack和open cv的光流...这样你就可以区分快速移动和慢速移动的物体...但是要保持刷新好的特征场所给你的点,否则任何进入相机视图的新车都不会更新...记录每个帧中goodfeaturestotrack拾取的点集的位移..这是移动物体的位移...以相同的方式计算速度...计算速度的基本思路是记录对象在摄像机视野中持久存在的帧数 ...如果你的摄像机是固定的,那么你的视野也是如此... 因此重要的是你能捕捉到多少帧 ... ...记住.... opencv的光流用于跟踪慢速移动的物体或理论上更多的特征点(由良好特征确定跟踪..)位移在两个连续帧之间较少,以使算法工作...大位移将有一些t的错误预测 算法...这就是为什么图像平面的速度很重要......至少定性地你应该知道它...

注意:这两种方法都适用于单个对象跟踪..对于多个对象跟踪,您需要进行一些修改......但是您可以从任何一种方法开始...我认为它会起作用..