2011-11-17 39 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)?或者可能使用之前計算的值 - 記住它只是給你它的「最佳猜測」。

相關問題