0

如何在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();

提前致谢!

4

1 回答 1

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 的子矩阵,则行之间会有间隙。

于 2013-10-30T12:38:53.013 回答