图像处理中很多时候会对像素点进行操作。在OpenCV有许多方法来对像素进行遍历,这篇是对at()函数做的笔记。
at()函数
对于单通道图像"picture1",picture1.at<uchar>(i,j)就表示在第i行第j列的像素值。对于多通道图像如RGB图像"picture2",可以用picture2.at<Vec3b>(i,j)[c]来表示某个通道中在(i,j)位置的像素值。
1)上面的uchar、Vec3b表示图像元素的类型。
2)(i,j)当然就是指像素点的位置,表示第i行第j列。
3)[c]表示的是通道,对于RGB图像而言,c取0就是B分量;c取1就是G分量;c取2就是R分量(要注意在OpenCV中是按BGR的顺序表示的)。
代码(单通道图像遍历):
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv)
{
Mat picture(200, 200, CV_8UC1);/*创建图像picture,默认为纯黑色(即每个点的像素值为0),
大小为200 * 200,类型为CV_8UC1(是单通道图像)*/
imshow("picture", picture); //在“picture”窗口显示图像picture
//遍历picture的每个像素点,并