使用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个元素。
本文探讨了在使用OpenCV处理图像时,通过指针访问Mat类型元素的一个常见错误。特别是当尝试对连续存储的Mat元素进行偏移访问时出现的问题,并提供了具体的代码示例来说明这一陷阱。
3340

被折叠的 条评论
为什么被折叠?



