【发布时间】:2012-11-29 04:26:57
【问题描述】:
似乎有 Google 结果和 stackoverflow 帖子可以回答这个问题,但简单的事实是我无法理解它们。无论我读了多少书,我都无法理解四元数、欧拉角和罗德里格斯变换等等。
有人愿意像我 12 岁那样向我解释如何从 OpenCV 的 solvePnP() 方法返回的旋转和平移向量中获取我可以插入 3d 图形应用程序的 xyz 位置和 xyz 旋转值吗?
这是用于 C++ 中的增强现实应用程序。我已经启动并运行了 OpenCV 部分,跟踪标记板并将旋转和平移矢量发送到图形程序,但我不知道如何使用这些信息来设置我的 3d 对象。
我真的很想了解这背后的数学原理,并会感谢您耐心地解释这里的理论。但我也会接受指向一些代码的指针,我可以在另一天复制/粘贴并学习理论。事实上,通过查看具体代码并回归理论,我似乎可以更快地学习这样的东西。
编辑: 就像this... 显然应该为我指明正确的方向,但据我所知,它也可能是时间机器的计划。我突然想到我可能会要求补习高中数学,但这不可能是第一次。
编辑: 这是从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>
【问题讨论】:
-
这个问题应该移到math.stackexchange.com
-
看这里,karlphillip,如果我在 math.stackexchange 中问这个问题,我会得到充满我不明白的东西的回答。我理解这一点的唯一希望是看看如何在代码中做到这一点。然后我可以理解数学位。这就是我被分配的大脑的工作方式。
标签: c++ opencv rotation rotational-matrices