2015-03-02 64 views
2

有沒有人可以使用openCV 3.0 recoverPose函數,並取得良好效果? 我有:openCV 3.0 recoverPose錯誤的結果

cv::Mat r; 
cv::Mat t; 
cv::Mat E = cv::findEssentialMat(features1, features2); 
cv::recoverPose(E, features1, features1, r, t); 

float xAngle = radToDeg(atan2f(r.at<float>(2, 1), r.at<float>(2, 2))); 
float yAngle = radToDeg(atan2f(-r.at<float>(2, 0), sqrtf(r.at<float>(2, 1) * r.at<float>(2, 1) + r.at<float>(2, 2) * r.at<float>(2, 2)))); 
float zAngle = radToDeg(atan2f(r.at<float>(1, 0), r.at<float>(0, 0))); 

由於輸入我用一個形象1836x1836尺寸和其他圖像1836x1836這是剛剛旋轉90度到左邊。我已經使用計算機程序旋轉它,所以它正好旋轉90度。

我期待的結果是:

xAngle: 0 

yAngle: 0 

zAngle: 90 (or -90 depending on Z direction) 

不幸的是我的結果是:

xAngle: 90 

yAngle: 0.113659 

zAngle: 180 

誰能幫助我呢?

+0

在恢復中,您傳遞的是功能1而不是功能2。 – Ruturaj 2016-10-29 00:41:20

回答

1

基本矩陣不能用於描述純旋轉。如果你知道你的圖像只是通過沒有平移的旋轉相關,那麼你必須估計它們之間的單應性(又名投影變換)。

+0

謝謝。你知道我可以如何使用openCV 3.0獲得純粹的旋轉嗎?我讀過很多文件,我有點困惑。 – Bystysz 2015-03-07 16:30:04

+2

@Dima,照顧詳細? – 2015-07-24 23:25:04