Mat矩阵中指针操作的小陷阱

使用ptr指针对Mat中的元素进行操作:

for(int j=0;j<nr;j++)

{

uchar* data=src.ptr<uchar>(j);

for(int  i=0;i<nc;i++)

{ //src.at(j,i);

int value=data[i];

}

}

要对某块元素进行运算,如果这样写的话就会出现问题:

for(int j=0;j<nr;j++)

{

uchar* data=src.ptr<uchar>(j);

for(int  i=0;i<nc;i++)

{ //src.at(j,i);

int value=data[i];

int value2=(data+1)[i];//src.at(j+1,i);

}

}

由于大部分Mat都是连续存储的,导致(data+1)[i]取得值不是第j行i列的元素,而是第j行的i+1个元素。


发布了10 篇原创文章 · 获赞 1 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/orgst/article/details/8724867