如何在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();
提前感谢!
答案 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的子矩阵,则行之间会有间隙。