使用opencv进行图像处理时,经常会需要遍历整幅图的每一个像素点,再对每一个像素点进行操作,例如:
Mat dst = img.clone();
const int channels = dst.channels();
uchar *p;
int nRows = dst.rows;
int nCols = dst.cols*channels;
for (int i = 0; i < nRows ; i++)
{
p = dst.ptr<uchar>(i);
for (int j = 0; j < nCols ; j++)
{
p[j]=255;
}
}
今天遇到了一个问题。
注意:这时候遍历的i和j其实是个少一个的,如下才是遍历nRows和nCols尺寸下的所有像素点

在使用OpenCV进行图像处理时,通过Mat遍历图片像素点时,通常需要注意边界处理。常见错误是遍历到最后一行时,由于数组从0开始,导致尝试访问nCols时发生越界。正确做法是遍历到[nCols-1]以避免此类问题。
最低0.47元/天 解锁文章
4398

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



