3.像素访问操作

    xiaoxiao2022-07-13  174

    迭代器访问像素

    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与Vec3F

     Vec3b对应三通道的顺序是blue、green、red的uchar类型数据。

    Vec3f对应三通道的float类型数据

    把CV_8UC1转换到CV32F1实现如下:

    src.convertTo(dst, CV_32F);

    像素范围处理saturate_cast<uchar>

    saturate_cast<uchar>(-100),返回 0。

    saturate_cast<uchar>(288),返回255

    saturate_cast<uchar>(100),返回100

    这个函数的功能是确保RGB值得范围在0~255之间

    空白图像赋值

    img = Scalar(0);

     

    最新回复(0)