OpenCV SURF - 获取两张图片之间的旋转角度

4
我正在使用SURF算法比较对象之间的地标,并想知道如何检测两张图片之间的旋转角度。我已经看过另一个非常相似的问题(问题)。这个问题被拒绝是因为这种方法是天真的,但是通过这种方法仍然可以实现结果。
所以我的问题仍然存在,如何使用OpenCV的SURF算法(请使用C ++)检测两个图像之间的角度方向差异。
我正在使用的代码可以在 OpenCV教程页面 中找到。

可能是比例和旋转模板匹配的重复问题。 - Fabricator
你是假设只有旋转,还是假设有一个单应性变换(例如缩放、旋转和平移),但只对计算出的单应性变换中的旋转部分感兴趣? - Micka
2个回答

5

0

这是我使用EmguCv(OpenCV的.NET封装)和C#完成的。

一旦您获得了单应矩阵,就可以使用RotatedRect对象获取旋转角度。

System.Drawing.Rectangle rect = new System.Drawing.Rectangle(Point.Empty, modelImage.Size);
PointF[] pts = new PointF[]
{
  new PointF(rect.Left, rect.Bottom),
  new PointF(rect.Right, rect.Bottom),
  new PointF(rect.Right, rect.Top),
  new PointF(rect.Left, rect.Top)
};

pts = CvInvoke.PerspectiveTransform(pts, homography);

RotatedRect IdentifiedImage = CvInvoke.MinAreaRect(pts);
result.RotationAngle = IdentifiedImage.Angle;

你可以将上述代码转换为C++。


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