我正在使用 2 个摄像头进行头部姿势估计项目。对于一个相机系统工作并返回头部相对于每个相机坐标系的旋转矩阵和平移向量。我在 OpenGL 场景中渲染了对象,该对象被旋转和平移以表示头部运动。要显示计算的旋转矩阵和平移向量,我只需使用以下 OpenGL 命令。
glMatrixMode(GL_MODELVIEW);
glLoadMatrixd(pose_matrix);
其中姿势矩阵是由头部的旋转矩阵和平移向量构造的 OpenGL ModelView 矩阵。
现在我正在尝试为 2 个校准的相机执行此操作。当第一个相机丢失了脸部的轨迹但第二个相机估计了头部姿势时,我会显示相对于第二个相机的旋转和平移,反之亦然。我想显示一个 OpenGL 对象并为这两种情况移动它。为此,我需要将姿势矩阵转移到公共坐标系中。
我知道 2 个相机相对于彼此的相对几何形状。我假设其中一个相机是世界坐标系,我通过将第二个相机的位姿矩阵和第二个相机的校准矩阵相对于第一个相机相乘,将第二个相机的头部姿势矩阵转移到第一个相机的框架。当我将此相乘矩阵加载到 OpenGL ModelView 矩阵中时,我得到了错误的结果。当第一台相机捕捉到人脸时,对象正在向右移动,但对于第二台相机,对象被平移和旋转,并且与第一台相机的情况不同。
可能是什么问题呢?也许OpenGL显示部分是错误的或者?