OpenCV SURF -获得两个图像之间的旋转角度
OpenCV SURF - Get Rotation angle between two images
我正在使用SURF算法来比较物体之间的地标,我想知道如何检测两张图片之间的旋转角度。我已经看到了另一个问题非常相似。这个问题被拒绝了,因为它是达到结果的一种天真的方法。但结果仍然可以通过这种方法实现。
所以我的问题仍然存在,如何使用OpenCV的SURF算法(请使用c++)来检测两个图像之间的角度方向差异。。
我使用的代码可以从opencv教程页面找到。
我认为,一旦你得到了单性矩阵H,你就可以把它分解成它的组成矩阵:平移,旋转和缩放。下面是一个例子
我建议你阅读这个有用的教程:https://math.stackexchange.com/questions/78137/decomposition-of-a-nonsquare-affine-matrix
这就是我使用EmguCv(。. NET包装器到OpenCV) &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++中转换
相关文章:
- 如何使用 OpenCV 解码在两个 UWP 应用之间发送的图像字节?
- 使用 LoadToolbarEx 解决异常以及正常图像与大图像计数之间的差异
- OPENCV:如何使用5点算法从来自不同相机的两个图像之间的特征匹配来计算必需矩阵
- 从opencv的视频关注和标量拍摄的图像之间的整数划分
- 视差图和校正图像之间的叠加
- 如何在OpENCV中的图像中找到像素之间的欧几里得距离
- 如何在Python中实现ITK映像和SimpleItk图像之间的转换
- OpenCV Mahalanobis函数,用于计算两个图像之间的距离
- EMGU (openCV) 在 C# 和 C++ 之间来回传递图像
- 如何使用fftw包编写计算模板(T)和二维图像(亚胺)之间二维卷积的函数
- 图像操作2个图像之间的差异
- OpenCV:快速量化两个图像之间的差异
- 使用 lerp 在两个图像之间执行线性插值
- 计算图像对之间的几何变换
- 在 OpenCV / C++ 中对应两个图像之间的值
- Xcode 中多个图像之间的交集
- 如何找出两个图像之间的对象差异
- 图像深度和通道之间的差异
- 原始图像和调整大小的图像之间的关系(C++/OpenCV)
- 检测两幅图像之间的差异