我已使用此代码 作为基础来检测场景中的矩形目标。我使用 ORB 和 Flann Matcher。我已经能够使用findHomography()
和perspectiveTransform()
函数成功地在我的场景中绘制检测到的目标的边界框。
参考图像(img_object
在上面的代码中)是仅矩形目标的直视图。现在我的场景图像中的目标可能会向前或向后倾斜。我想找出它倾斜的角度。我已经阅读了各种帖子,得出的结论是findHomography()
可以将返回的单应性分解为旋转矩阵和平移向量。我使用了此链接推荐的https://gist.github.com/inspirit/740979中的代码翻译成C++。这是从OpenCV的相机标定模块得到的张SVD分解代码。我从 O'Reilly 的 Learning OpenCV 书中得到了这个分解代码的完整解释。
我的问题是:
- 我是否正确假设我得到的分解旋转矩阵会告诉我目标倾斜的角度?
- 其次,我可以使用从
findHomography()
in 获得的 Homography 作为该分解模块的输入并期望正确的输出吗?还是我缺少什么? - 有没有其他方法可以达到同样的效果?
最后,我在移动平台上编码,所以我也关心性能。如果你能指出我正确的方向,我会很高兴。
提前感谢您的时间和回复。