Objective c OpenCV solvePnP到OpenGL:大型转换向量

Objective c OpenCV solvePnP到OpenGL:大型转换向量,objective-c,opengl,opencv,Objective C,Opengl,Opencv,我正在使用OpenCV和OpenGL构建一个MacOSX AR应用程序。它是基于标记的AR,我正在使用一个叫做AR的库。这个库只是使用OpenCV函数将视觉输出直接写入图像缓冲区。但是我想使用OpenGL进行视觉输出,所以我创建了一个OpenGL视图,我正在使用我使用OpenCV cam校准程序为GL_投影矩阵获得的内在参数进行初始化,如下所示: cv::Mat intrMat = tracker.camMatrix; // intrinsic 3x3 matrix // contains: /

我正在使用OpenCV和OpenGL构建一个MacOSX AR应用程序。它是基于标记的AR,我正在使用一个叫做AR的库。这个库只是使用OpenCV函数将视觉输出直接写入图像缓冲区。但是我想使用OpenGL进行视觉输出,所以我创建了一个OpenGL视图,我正在使用我使用OpenCV cam校准程序为GL_投影矩阵获得的内在参数进行初始化,如下所示:

cv::Mat intrMat = tracker.camMatrix; // intrinsic 3x3 matrix
// contains:
// 641.68  0.00    319.50   
// 0.00    641.68  212.50   
// 0.00    0.00    1.00

const float fx = intrMat.at<double>(0,0);
const float fy = intrMat.at<double>(1,1);
const float fovy = 2 * atan(0.5f * screenH / fy) * RAD2DEG;
const float aspect = (screenW*fy) / (screenH*fx);
// GL Perspective values: fx=641.68 / fy=641.68 / fovy=41.01 / aspect=1.33

gluPerspective(fovy, aspect, 0.1, 100.0);
这是将这两个向量转换为我找到的GL_MODELVIEW矩阵的方法。我相信这是正确的,但问题是我得到的平移向量中的分量在+/-500和+/-1500之间太大,无法显示。以下是矩阵的输出示例:

0.96    0.05    -0.26   0.00    
0.01    0.97    0.23    0.00    
0.27    -0.22   0.94    0.00    
-72.55  8.47    -479.63 1.00
为什么会这样?solvePnP在转换向量中使用什么类型的单位?如何将它们转换为可用值以显示在OpenGL视图中

0.96    0.05    -0.26   0.00    
0.01    0.97    0.23    0.00    
0.27    -0.22   0.94    0.00    
-72.55  8.47    -479.63 1.00