2013-07-24 83 views
1

我想用opencv做3D重建,而且我非常遵循書中的所有步驟: RobertLaganière的OpenCV 2計算機視覺應用程序編程指南。查找基本矩陣(矩陣乘法錯誤)

我試圖找到基本矩陣時出現問題。我這樣做:

Mat fundemental= ransacTest(symMatches,keypoints1, keypoints2, outmatches); 
//ransacTest function by Computer Vision Application Programming Cookbook 

cout<<endl<<fundemental<<endl; 

Mat K=m_camera_data->get_K(); 
//get_K() function defined previously 
cout<<K<<endl; 

cout<<"K.T"<<K.t()<<endl; 

Mat_<double> E = K.t() *fundemental* K; // Error 

函數ransacTest和get_K()已被定義,他們似乎工作正常。我的基本矩陣如下

-7.65924601845777e-006 0.0052097327886   -0.179203748284864 
-0.005202223611495075 -8.913278071309e-006 -0.5024237005766097 
0.1843335279902164  0.4908219843516384  1 

我K矩陣如下

382.5 0 160 

0  0 120 

0  0  1 

K的轉置正確。 當我嘗試獲取基本矩陣E時出現問題。運行程序時出現此錯誤 「OpenCV錯誤:斷言失敗(類型== B <> & &>未知函數,文件.. .... \ SRC \ OpenCV的\模塊\核心的\ src \ matmul.cpp,行711"

我看着它,我在這個問題Opencv Matrix multiplication 發現了類似的問題,但我試圖做什麼,答案說(改變矩陣類型),我仍然有相同的錯誤

我也試圖用Gemm做矩陣乘法,但同樣的錯誤出現。

我真的可以使用一些幫助!提前致謝。

回答

0

這聽起來像是如果K的類型不是雙倍(CV_64F);可能它是浮動的(CV_32F)。檢查K.type() == CV_64F

+0

我剛剛檢查過,它是浮動的!謝謝!我剛剛解決了這個問題。這與我的基本和我的K確實是一個矩陣類型的問題。我現在所做的每一次都是以Mat_ 的身份宣佈爲基礎,它似乎有效! – user2606677