1.对于.at<uchar>(i, j) 和.at<uchar>(Point(i, j)) 的区别
前者是对第 i 行第 j 列的像素进行访问,后者是对点(i, j)进行访问
2. 动态地址访问像素:.at<Vec3b>(i, j)[ ] 和 .at<uchar>(i, j)
int b = src.at<Vec3b>(i,j)[0];
int g = src.at<Vec3b>(i,j)[1];
int r = src.at<Vec3b>(i,j)[2];
分别访问是三通道图像的单个像素。三通道图像:每个像素存储了三个值,分别为蓝绿红通道上的数值。
int grayData = gray.at<uchar>(i,j);
用于访问灰度图像的单个像素。灰度图像:每个像素只存储一个值。
3. 指针访问像素:.ptr<uchar>(i)
uchar* srcRows = src.ptr<uchar>(i);
申请一个指针指向每行第一个像素位置,用来遍历一行像素。
当图像为三色通道时,每个像素存储三个值,B、G、R,每行形如BGRBRGB..
当图像为灰度图像时,每个像素存储一个值。