Opengl 相同的标记位置,不同的旋转和平移矩阵-OpenCV

Opengl 相同的标记位置,不同的旋转和平移矩阵-OpenCV,opengl,opencv,projection-matrix,rotational-matrices,Opengl,Opencv,Projection Matrix,Rotational Matrices,我正在使用OpenCV开发一个增强现实标记检测程序,我得到了同一标记的两个不同的旋转和平移值 当相机稍微移动时,3D模型在这些状态之间自动切换,无需我的控制。下面添加了上述两种情况的屏幕截图。我希望图像1是正确的。如何以及在何处更正此问题 我随后为OpenGL创建了投影矩阵。 例: 图1 图2 附加的 如果有人建议我如何让茶壶坐在标记平面上,我会很高兴的。我知道我必须编辑旋转矩阵。但是最好的方法是什么呢?要旋转茶壶,可以使用glRotatef。如果要将当前矩阵绕y轴旋转125°,可以调用:

我正在使用OpenCV开发一个增强现实标记检测程序,我得到了同一标记的两个不同的旋转和平移值

当相机稍微移动时,3D模型在这些状态之间自动切换,无需我的控制。下面添加了上述两种情况的屏幕截图。我希望图像1是正确的。如何以及在何处更正此问题

我随后为OpenGL创建了投影矩阵。 例:

图1

图2

附加的


如果有人建议我如何让茶壶坐在标记平面上,我会很高兴的。我知道我必须编辑旋转矩阵。但是最好的方法是什么呢?

要旋转茶壶,可以使用glRotatef。如果要将当前矩阵绕y轴旋转125°,可以调用:

glRotate(125,0,1,0);
我看不出你茶壶的当前方向,但我想你需要绕x轴旋转90°


我不知道您的第一个问题,OpenCV似乎无法确定显示的位置中哪一个是正确的。这取决于OpenCV寻找边缘、高对比度、独特点的功能。。。以及您是如何实现的。

您是否尝试过交换姿势算法迭代、EPNP、P3P?或者可能使用上一次计算的值——记住,这只是给你“最佳猜测”

glRotate(125,0,1,0);