我已使用此code作为检测场景中矩形目标的基础。我使用ORB和Flann Matcher。我已经能够使用findHomography()
和perspectiveTransform()
函数成功绘制场景中检测到的目标的边界框。
参考图像(上述代码中的img_object
)是仅矩形目标的直视图。现在,我的场景图像中的目标可能向前或向后倾斜。我想找出它倾斜的角度。我已阅读各种帖子并得出结论:findHomography()
返回的单应性可以分解为旋转矩阵和平移向量。
我使用了https:/gist.github.com/inspirit/740979推荐的this link代码转换为C ++。这是从OpenCV的摄像机校准模块获得的Zhang SVD分解代码。我从O'Reilly的Learning OpenCV书中得到了这个分解代码的完整解释。
我的问题是:
findHomography()
获得的Homography作为此分解模块的输入并期望正确的输出吗?或者有什么我想念的东西?最后,我在移动平台上编码,所以我也关注性能。如果你能指出我正确的方向,我会很高兴的。
提前感谢您的时间和回复。
答案 0 :(得分:0)
张的校准程序将产生一个旋转矩阵。这可以表示为3(欧拉)角度,而不是一个。或者,等效地(通过罗德里格斯的公式),作为一个单位向量和关于该向量的旋转角度 - 即三个数字。
除非您的相机和目标相对于彼此非常小心地定位,否则没有理由期望只有一个非零旋转角度。