2011-11-17 5 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

추가

누군가가 나에게 방법을 제시하면 내가 기쁠 것 차를 만드는 법 냄비 마커 평면에을 앉으십시오. 나는 Rotation 행렬을 편집해야한다는 것을 알고있다. 그러나 그 일을하는 가장 좋은 방법은 무엇입니까?

답변

0

주전자를 회전 시키려면 glRotatef()를 사용할 수 있습니다. 당신은 Y 축을 중심으로 125 °로 예를 들어 현재 매트릭스를 회전 할 경우에 당신은 호출 할 수

glRotate(125,0,1,0); 

나는 당신의 찻 주전자의 현재 방향을 만들 수없는,하지만 난 당신이 회전해야 할 것 같아요 x 축을 중심으로 90 ° 회전합니다.

첫 번째 문제에 대해 잘 모르지만 OpenCV는 표시된 위치 중 어느 것이 "올바른"것인지를 결정할 수없는 것 같습니다. 그것은 OpenCV가 찾고있는 기능의 종류 (가장자리, 고 대비, 고유 점 ...)와 구현 방식에 따라 다릅니다.

0

포즈 알고리즘 (ITERATIVE, EPNP, P3P)을 바꿔 치기를 시도 했습니까? 또는 이전 계산의 값을 사용할 수도 있습니다. 단지 '최상의 추측'을 제공하는 것입니다.