2014-03-25 75 views
2

我有一個3x3單應性矩陣,我使用findHomography()函數計算出來的。 我將它存儲在cv :: Mat矩陣中。訪問openCV單應性矩陣中的元素

我嘗試使用下面的代碼做元素訪問

float cvHomography::accessElements(const cv::Mat& aCvMat) 
{ 
    //cout << aCvMat << endl; 

    const float* Mi; 
    for(int i = 0; i < aCvMat.rows; i++){ 
     Mi = aCvMat.ptr<float>(i); 
     for(int j = 0; j < aCvMat.cols; j++){ 
      cout << Mi[j] << endl; 
     } 
    } 
} 

以上不返回從單應矩陣正確的值。 我已經通過文檔,教程和谷歌搜索,我真的不能看到我做錯了什麼。

回答

3

這應該工作(如果你確信類型的圖像是CV_64F):

void cvHomography::accessElements(const cv::Mat& aCvMat) 
{ 
    // assert aCvMat.type() == CV_64F 
    for(int i = 0; i < aCvMat.rows; i++){ 
     for(int j = 0; j < aCvMat.cols; j++){ 
      cout << aCvMat.at<double>(i,j) << endl; 
     } 
    } 
} 

而且重載運算符< <性病:: ostream的與CV作品::墊,如果你想只顯示圖像元素。

+0

我該如何確定矩陣的類型。 openCv文檔沒有說明返回矩陣的類型:( – nass

+0

@maroi。我試過了這個方法,但是我仍然得到了錯誤的值 另外,不,它不只是我想要做的'cout'。我很好奇about是一個事實,即超載的<< <<操作符會打印正確的矩陣,所以如果aCvMat正確,爲什麼'.at ()'發回錯誤的數據? – nass

+0

確定它畢竟是'' 。不是''。請更新你的答案,這樣我就可以接受 – nass