2011-11-17 23 views
0

我工作的一个增强现实标记检测程序,使用OpenCV的和我得到两个不同的旋转和平移的值相同的标记相同标记的位置,不同的旋转和平移矩阵 - OpenCV的

当相机略微移动时,3D模型会自动在这些状态之间切换,而不受我的控制。以上两种情况的屏幕截图添加如下。我希望Image#1是正确的。如何以及在哪里纠正?

我跟着How to use an OpenCV rotation and translation vector with OpenGL ES in Android?创建了OpenGL的投影矩阵。 例如:

// code to convert rotation, translation vector 
glLoadMatrixf(ConvertedProjMatrix); 
glColor3f(0,1,1) ; 
glutSolidTeapot(50.0f); 

图像#1 enter image description here

图片#2 enter image description here

附加

我会很高兴,如果有人提出我的方式做茶在标记平面上放置坐标。我知道我必须编辑旋转矩阵。但是,这样做的最好方法是什么?

回答

0

要旋转茶壶,您可以使用glRotatef()。如果你想绕y轴125°旋转,例如当前的矩阵您可以拨打:

glRotate(125,0,1,0); 

我不能让你的茶壶的电流方向,但我猜你会需要旋转它围绕x轴旋转90°。

我不知道你的第一个问题,OpenCV似乎无法确定哪个显示的位置是“正确的”。这取决于OpenCV寻找什么样的功能(边缘,高对比度,独特的点...)以及如何实现它。

0

您是否尝试交换姿势算法(ITERATIVE,EPNP,P3P)?或者可能使用之前计算的值 - 记住它只是给你它的“最佳猜测”。

相关问题