OpenCV时间接触光流

OpenCV time to contact with optical flow

本文关键字:光流 接触 时间 OpenCV      更新时间:2023-10-16

我试图用c++和OpenCV编写一个程序,计算剩余的时间(帧),直到与对象发生碰撞。作为一个示例视频,我有一个摄像机朝着黑板移动。

我的方法如下:

  1. 检测要跟踪的特征(尝试goodFeaturesToTrack()或设置点"by hand")
  2. 通过calcOpticalFlowPyrLK()计算光流
  3. 通过findFundamentalMat()计算先前和当前发现的特征的基本矩阵
  4. 检查基本矩阵是否正确
  5. 计算极线和极线-视频中扩展的焦点

最后,我打算使用时间接触法来计算碰撞前的剩余帧数。

到目前为止,我最大的问题是找到正确的基本矩阵,从而找到极点。计算的矩阵似乎是错误的,极线也是如此。我计划的方法是否正确?有没有人有一个从视频中获得敌人的有效例子,或者任何关于我必须做什么的演练?

任何帮助我都会很高兴的!

谢谢!

我认为LK光流只会检测2D流。虽然原则上您可以从图像的一部分(即第一象限)的运动中推断信息,但基本矩阵需要立体图像对,而不是连续的图像。

我一时想不出解决你的问题的最佳步骤。但是我在想从运动中研究结构可能会对你有所帮助,因为这种技术解决了从运动中创建三维数据的问题,但没有立体相机对。