OpenCV - 如何检测和测量两个帧之间的角度?

5

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

我解释一下: 摄像机固定不动,框架可以围绕中心旋转而不移动。目前我已经手动旋转,并希望能够比较帧并返回角度。例如:

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

  //Return the value
}

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

2个回答

3
如果您能检测静态物体,例如背景,在帧上,则可以在背景上找到称为good_features_to_track(cvGoodFeaturesToTrack)的点,并使用optical_flow(cvCalcOpticalFlowPyrLK)跟踪这些点。
如果旋转仅在'xy'平面上,则可以使用cvGetAffineTransform检测旋转。
由于只允许旋转(没有平移和缩放),因此使用通过cvGetAffineTransform获得的变换矩阵不难确定旋转角度。该矩阵类似于(请参见wikipedia):

enter image description here

\theta是旋转角度


谢谢您的快速回复!我会尝试这个方法并向您反馈结果。只是想知道,如果没有背景,也就是说,如果我拍摄的是条纹图案(mire),这个方法是否也适用? - Julio

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接