一.访问像素
利用Mat的at(int y,int x)方法可以访问元素,在编译时必须明确方法返回值的类型,因为Mat可以接收任何类型的元素
image.at<uchar>(j,i) = 255;
注意:声明Mat时,没有指定图像数据类型,at不会进行类型转换,所以在读取的时候,要指定类型。
三通道色彩,数据类型为cv::Vec3b(3色短向量)
image.at<cv::Vec3d>(j,i)[channel] = value;//访问单个通道元素(Vec3d中的d为双精度)
image.at<cv::Vec3d>(j,i) = cv::Vec3d(255,255,255);//三通道。
扩展:Mat类的定义采用了C++模板。
cv::Mat_<T>
cv::Mat_<uchar> img(image);
img(50,100) = 0;//模板类,重写了operator(),与at方法结果完全相同。
二.用指针扫描图像
主要思路:利用Mat的ptr()函数返回一行的起始地