【问题标题】:OpenCV - How to detect and measure an angle between two frames?OpenCV - 如何检测和测量两帧之间的角度?
【发布时间】:2011-05-03 11:19:42
【问题描述】:

我正在尝试理解和使用 OpenCV。我想知道是否可以找到并测量两个框架之间的角度。

我解释一下:凸轮是固定的,框架可以围绕中心旋转而不会移动。现在我设法手动旋转,我希望能够比较帧并返回角度。例如:

double getRotation(Image img1, Image img2) {
  //Compare the frames

  //Return the value
}

然后我按照那个角度旋转。

【问题讨论】:

    标签: c# c++ opencv rotation angle


    【解决方案1】:

    如果您能够检测到静态对象,例如。 G。背景,在帧上,您可能会在背景上找到名为 good_features_to_track (cvGoodFeaturesToTrack) 的点,并使用optical_flow (cvCalcOpticalFlowPyrLK) 跟踪这些点。

    如果旋转仅在“xy”平面上,您可以使用cvGetAffineTransform 检测旋转。

    由于只允许旋转(不允许平移和缩放),因此使用cvGetAffineTransform 获得的变换矩阵确定旋转角度并不困难。该矩阵看起来像(见wikipedia):

    其中\theta是旋转角度

    【讨论】:

    • 感谢您的快速回答!我会试试这个,并随时通知你。只是想知道,如果没有背景,我的意思是,如果我在拍摄 barcolor(mire),它也可以吗?
    【解决方案2】:

    这可能非常棘手,只是一个更简单的解决方案可能是找到框架的霍夫线。当然,您需要确定可以在两帧之间跟踪的最佳和稳定线的位置,一旦可用,您就可以找到两帧之间的角度。 Andrey 所建议的寻找角度的方法也应该是可用的。

    【讨论】:

      猜你喜欢
      • 2019-11-02
      • 2018-07-07
      • 1970-01-01
      • 1970-01-01
      • 2013-02-13
      • 1970-01-01
      • 2015-05-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多