2013-10-30 62 views
0

如何指向opencv中Mat中的最後一個元素?指向opencv/C++中Mat中的最後一個元素

這是我做了什麼直到現在......似乎不正確:(

Mat Bdst; 
pToLastValue = Bdst.ptr<float>(0); // pointer to row 0 
std::vector<float> vec(pToLastValue, pToLastValue+Bdst.cols); // construct a vector 
float* pToLastValue = &vec.back(); 

在此先感謝!

+0

你想做什麼?指向最後一個元素的指針可以像這樣訪問。 'float * pToLastValue = static_cast (Bdst.end ().ptr);' – sgarizvi

+0

感謝您的幫助。我嘗試過,但我得到這個static_cast類型是無效的錯誤! – user2758510

+0

我的不好,沒有測試代碼。使用C風格類型如下所示:'float * pToLastValue =(float *)(Bdst.end ().ptr);' – sgarizvi

回答

0

這將讓你一個指向最後一個元素。

Mat Bdst(20, 6, CV_32FC1, data); 
float* pToLastValue = reinterpret_cast<float*>((--Bdst.end<float>()).ptr); 

請記住,end()返回的迭代器已經超過最後一個元素,所以您需要遞減以獲取最後一個元素。

這也將工作(只是點到最後一行的最後一個元素):

pToLastValue = Bdst.ptr<float>(Bdst.rows - 1) + Bdst.cols - 1; 

有一件事要小心的是,墊存儲並不總是連續的。例如如果你的Mat只是一個較大Mat的子矩陣,那麼行之間就會有間隙。

相關問題