2011-05-03 109 views
5

我想了解和使用OpenCV。我想知道是否有可能找到并测量两个帧之间的角度。OpenCV - 如何检测和测量两个帧之间的角度?

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

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

    //Return the value 
} 

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

回答

3

如果您能够检测到静态物体, G。背景上,然后您可以在背景上找到称为good_features_to_track(cvGoodFeaturesToTrack)的点,并使用optical_flow(cvCalcOpticalFlowPyrLK)跟踪此点。

如果旋转仅在'xy'上,那么您可以使用cvGetAffineTransform检测旋转。

由于只允许旋转(不平移和缩放),因此使用变换矩阵确定旋转角度并不困难,通过cvGetAffineTransform获得。这个矩阵的样子(见wikipedia):

enter image description here

其中\ theta是旋转角度

+0

感谢您的快速回答!我会试试这个,并保持你的发布。要知道,如果没有背景,我的意思是,如果我正在拍摄barcolor(泥泞),它可以起作用吗? – Julio 2011-05-03 12:09:03

0

嗯,这可能是非常棘手的,只是一个简单的解决方案可能是找到帧的霍夫线。当然,您需要确定两帧之间可以跟踪的最佳稳定线条,一旦可用,您就可以找到两帧之间的角度。安德烈所建议的找到角度也应该可以使用。

相关问题