我正在尝试理解和使用 OpenCV。我想知道是否可以找到并测量两个框架之间的角度。
我解释说:凸轮是固定的,框架可以围绕中心旋转并且不会移动。现在我设法手动旋转,我希望能够比较帧并返回角度。例如 :
double getRotation(Image img1, Image img2) {
//Compare the frames
//Return the value
}
然后我按照那个角度旋转。
如果您能够检测帧上的静态对象,例如背景,那么您可能会在cvGoodFeaturesToTrack
背景上找到名为 good_features_to_track ( ) 的点,并使用optical_flow ( ) 跟踪这些点cvCalcOpticalFlowPyrLK
。
如果旋转仅在“xy”平面上,您可以使用cvGetAffineTransform
.
由于只允许旋转(不允许平移和缩放),因此使用变换矩阵确定旋转角度并不困难,由cvGetAffineTransform
. 该矩阵看起来像(见维基百科):
其中 \theta 是旋转角度
好吧,这可能非常棘手,只是一个更简单的解决方案可能是找到框架的霍夫线。当然,您需要确定可以在两帧之间跟踪的最佳和稳定线在哪里,一旦可用,您就可以找到两帧之间的角度。安德烈所建议的寻找角度的方法也应该是可用的。