1 方法
遍历图像像素
- 方一:
at<typename>(i,j)
- 方二:
指针来遍历图像
取出图像中第i行数据的指针:
image.ptr<uchar>(i)。
- 方三:
Mat提供了一个检测图像是否连续的函数isContinuous()。当图像连通时,我们就可以把图像完全展开,看成是一行。
image.step返回图像一行像素元素的个数(包括空白元素),image.elemSize()返回一个图像像素的大小。
&image.at<uchar>(i,j)=image.data+i*image.step+j*image.elemSize();
- 方四:
下面的方法可以让我们来为图像中的像素声明一个迭代器:
MatIterator_<Vec3b> it;
Mat_<Vec3b>::iterator it;
如果迭代器指向一个const图像,则可以用下面的声明:
MatConstIterator<Vec3b> it; //或者
Mat_<Vec3b>::const_iterator it;
如果你想从第二行开始,则可以从image.begin()+image.rows开始。