学习笔记之——Opencv中遍历图像的方法

本博文列出几种opencv遍历图像的方法~

1、通过.at<typename>(i,j)

通过image.at<uchar>(i,j):取出灰度图像中i行j列的点。

image.at<Vec3b>(i,j)[k]:取出彩色图像中i行j列第k通道的颜色点,k=[0,1,2],分别代表B,G,R。

其中uchar,Vec3b都是图像像素值的类型。
 

2、Mat的模板子类Mat_

OpenCV定义了一个Mat的模板子类为Mat_,它重载了operator()让我们可以更方便的取图像上的点。

Mat_<uchar> im=image;

im(i,j)来取出灰度图像中i行j列的点。

3、用指针.ptr<uchar>(k)来遍历输入图像

取出图像中第i行数据的指针:image.ptr<uchar>(i)

值得说明的是:程序中将3通道的数据转换为1通道,在建立在每一行数据元素之间在内存里是连续存储的,每个像素三通道像素按顺序存储。也就是一幅图像数据最开始的三个值,是最左上角的那像素的三个通道的值。

4、迭代器Mat_iterator方法

下面的方法可以让我们来为图像中的像素声明一个迭代器:

MatIterator_<Vec3b> it;

Mat_<Vec3b>::iterator it;

如果迭代器指向一个const图像,则可以用下面的声明:

MatConstIterator<Vec3b> it; 或者

Mat_<Vec3b>::const_iterator it;
 

参考资料

https://blog.csdn.net/wulafly/article/details/71076594

发布了208 篇原创文章 · 获赞 198 · 访问量 23万+

猜你喜欢

转载自blog.csdn.net/gwplovekimi/article/details/103781975