我有一个小立方体,它的表面上有 n(你可以假设 n = 4)区分点。这些点被编号 (1-n) 并形成一个坐标空间,其中点 #1 是原点。
现在我使用跟踪相机来获取这些点的坐标,相对于相机的坐标空间。这意味着我现在有 n 个向量p_i
从相机的原点指向立方体的表面。
有了这些信息,我正在尝试计算代表这两个坐标空间之间的变换的仿射变换矩阵(旋转+平移)。翻译部分相当简单,但我正在努力计算旋转矩阵。
OpenCV 中是否有任何内置功能可以帮助我解决这个问题?
我有一个小立方体,它的表面上有 n(你可以假设 n = 4)区分点。这些点被编号 (1-n) 并形成一个坐标空间,其中点 #1 是原点。
现在我使用跟踪相机来获取这些点的坐标,相对于相机的坐标空间。这意味着我现在有 n 个向量p_i
从相机的原点指向立方体的表面。
有了这些信息,我正在尝试计算代表这两个坐标空间之间的变换的仿射变换矩阵(旋转+平移)。翻译部分相当简单,但我正在努力计算旋转矩阵。
OpenCV 中是否有任何内置功能可以帮助我解决这个问题?
听起来cvGetPerspectiveTransform
就是你要找的东西;cvFindHomograpy
也可能有帮助。
查看 OpenCV 的立体相机教程。OpenCV 使用平面棋盘进行所有计算,并将其 Z 维度设置为 0 以构建其 3D 点列表。您已经拥有 3D 点,因此请更改教程中的代码以反映您的 3D 点列表。然后您可以计算转换。