似乎有 Google 结果和 stackoverflow 帖子可以回答这个问题,但简单的事实是我无法理解它们。无论我读了多少,我都无法理解四元数、欧拉角和罗德里格斯变换等等。
有人愿意像我 12 岁那样向我解释如何从 OpenCV 的 solvePnP() 方法返回的旋转和平移向量中获取我可以插入 3d 图形应用程序的 xyz Position 和 xyz Rotation 值吗?
这是用于 C++ 中的增强现实应用程序。我已经启动并运行了 OpenCV 部分,跟踪标记板并将旋转和平移矢量发送到图形程序,但我不知道如何使用这些信息来设置我的 3d 对象。
我真的很想了解这背后的数学原理,并会感谢这里对理论的任何耐心解释。但我也会接受指向一些代码的指针,我可以在另一天复制/粘贴并学习理论。事实上,通过查看具体代码并回归理论,我似乎可以更快地学习这样的东西。
编辑:就像有这个......这显然应该为我指明正确的方向,但据我所知,它也可能是时间机器的计划。我突然想到我可能会要求补习高中数学,但这不可能是第一次。
编辑:这是从solvePnP()返回的旋转向量和平移向量的示例...转换为XML以用于图形应用程序。请注意,我看到的每一个都包含三行一列。
<Tvec type_id="opencv-matrix">
<rows>3</rows>
<cols>1</cols>
<dt>f</dt>
<data>
-2.50094433e+01 -6.59909010e+00 1.07882790e+02
</data>
</Tvec>
<Rvec type_id="opencv-matrix">
<rows>3</rows>
<cols>1</cols>
<dt>f</dt>
<data>
-1.92100227e+00 -2.11300254e-01 2.80715879e-02
</data>
</Rvec>