美文网首页OpenCv
opencv:at()

opencv:at()

作者: 青吟乐 | 来源:发表于2019-07-25 09:26 被阅读1次

在图像处理的时候会对每个像素点进行操作,at()可以获取到精确的像素点,
函数
picture1.at<uchar>(i,j) 单通道图像获取像素点,多通道图像获取像素点
picture2.at<Vec3b>(i,j)[c]多通道第c通道的像素值,c从开始

下面的代码就是一个用来对图像像素值计算的方法

void FattalToneMapping::calculateDivergence(cv::Mat & Gx, cv::Mat & Gy, cv::Mat & divG)
{
    divG = cv::Mat::zeros(Gx.rows, Gx.cols, CV_32FC1);          //返回一个给定参数大小的矩阵
    for (int i = 0; i < Gx.rows; i++)                           //依照像素顺序进行循环
        for (int j = 0; j < Gx.cols; j++)                       
        {
            divG.at<float>(i, j) = Gx.at<float>(i, j) + Gy.at<float>(i, j);     //成像图每个像素值等于给定的两个图像的对象像素值的和
            if (j > 0) { divG.at<float>(i, j) -= Gx.at<float>(i, j - 1); }      //j>0,和减去Gx对应像素点的的左边的像素点
            if (i > 0) { divG.at<float>(i, j) -= Gy.at<float>(i - 1, j); }      //i>0,和减去Gy对应像素点的的上放的像素点
            if (j == 0) { divG.at<float>(i, j) += Gx.at<float>(i, j); }         //j==0,和加上Gx的对应像素点的值
            if (i == 0) { divG.at<float>(i, j) += Gy.at<float>(i, j); }         //i==0,和加上Gy对应像素点的值
        }
}

相关文章

网友评论

    本文标题:opencv:at()

    本文链接:https://www.haomeiwen.com/subject/hiccrctx.html