指向opencv / c ++中Mat中的最后一个元素

时间:2013-10-30 11:40:12

标签: c++ opencv mat

如何在opencv中指向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();

提前感谢!

1 个答案:

答案 0 :(得分: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只是较大Mat的子矩阵,则行之间会有间隙。