我正在开发一个基本的Android增强现实应用程序。到目前为止,我使用opencv检测到一个正方形,然后使用cvFindExtrinsicCameraParams2()计算了旋转和平移向量。为此,我使用了4个对象点,它们只是围绕(0,0,0)的正方形角和图像中正方形的4个角。这为我提供了一个相当不错的旋转和平移矩阵。我还使用cvRodrigues2()计算了旋转矩阵,因为使用它比旋转向量更容易。只要我使用这些在图像中画一些点,一切都很好。但接下来我的步骤是将这些向量和矩阵传回Java,然后在OpenGL中使用它们绘制OpenGLView中的一个正方形。该正方形应该精确地环绕在OpenGLView背后显示的图像中的正方形周围。
我的问题是我找不到正确的方法在OpenGL中使用旋转矩阵和平移向量。我从与openCV函数使用的完全相同的对象点开始。然后我以几乎任何可能的方式应用旋转矩阵和平移向量。可悲的是,这些方法都没有产生我所希望的结果。有谁能告诉我如何正确使用它们?
到目前为止,“最接近的”结果是当我随机将整个矩阵乘以-1时。但大多数时候,正方形看起来仍然镜像反转或旋转了180度。所以我想这只是幸运的命中,而不是正确的方法。