天天看点

看他怎么“折腾”(二)

上一节,我们介绍了Mat遍历连续空间的方式,当然存数数据的空间也有可能是不连续的,本节就来简单介绍一下不连续空间的遍历方式。

再写代码

二维数组

同样,先来一段代码:

int es = mat.elemSize();
for (int row = 0; row < mat.rows; row++)
{
     for (int col = 0; col < mat.cols; col++)
     {
      (&mat.data[row * mat.step])[col * es] = 0;  //b
      (&mat.data[row * mat.step])[col * es + 1] = 0;  //g
      (&mat.data[row * mat.step])[col * es + 2] = 255;  //r
      }
}           

复制

代码说明

一、es代表的是每个像素所占的字节大小;

二、mat.step表示遍历按行遍历的步长,即每一行数据所占的字节大小;

三、具体遍历时按照二维数组来处理;

四、颜色的存储依然是按照B,G, R的顺序进行存储。

要不要去试一下,体会一下这种遍历方式呢?由你决定喽。