Mat_<Vec3b>::iterator it=img.begin<Vec3d>(); //初试位置
Mat_<Vec3b>::iterator itend=img.end<Vec3d>(); //终止位置
img.at<Vec3b>(i,j)[0] //蓝色通道
img.at<Vec3b>(i,j)[1] //绿色通道
img.at<Vec3b>(i,j)[2] //红色通道
Scalar intensity = img.at<uchar>(y, x);
或Scalar intensity = img.at<uchar>(Point(x, y));
读一个RGB像素点的像素值
Vec3f intensity = img.at<Vec3f>(y, x);
float blue = intensity.val[0];
float green = intensity.val[1];
float red = intensity.val[2];
uchar* p=img.ptr<uchar>( i) ,获取像素矩阵的指针,索引i表示第几行,从0开始计行数。
uchar data=p[j] 获取像素点(i, j)的像素值
Vec3b对应三通道的顺序是blue、green、red的uchar类型数据。
Vec3f对应三通道的float类型数据
把CV_8UC1转换到CV32F1实现如下:
src.convertTo(dst, CV_32F);
saturate_cast<uchar>(-100),返回 0。
saturate_cast<uchar>(288),返回255
saturate_cast<uchar>(100),返回100
这个函数的功能是确保RGB值得范围在0~255之间
img = Scalar(0);