OpenCV 获取像素值的几个方法

获取单通道矩阵的值

  Mat tempMask(g_sourceImg.rows + 2, g_sourceImg.cols + 2, CV_8UC1,Scalar::all(1));
//    g_maskImage(g_sourceImg.rows + 2, g_sourceImg.cols + 2, CV_8UC1,Scalar::all(1));
    tempMask.copyTo(g_maskImage);
    for (int i = 0 ; i < g_maskImage.rows; i++) {
        for (int j = 0; j < g_maskImage.cols; j++) {
          cout << (int)((*(g_maskImage.data + g_maskImage.step[0] * i + g_maskImage.step[1] * j)) * 1) << endl;
        }
    }

对单通道矩阵的进行赋值

// 随机赋值
Mat dist(10, 10, CV_8UC1);
for (int i = 0; i(i, j);
val = (unsigned)theRNG() & 255;
}
}
//自定义赋值
   for (int i = 0; i < g_maskImg.rows; i++) {
                for (int j = 0; j < g_maskImg.cols; j++) {
                     uchar val = g_maskImg.at(i,j);
                    int intVal = val;
                    if(intVal  > 1){
                        g_maskImg.at(i,j) = (char)0;
                    } else {
                        g_maskImg.at(i,j) = (char)255;
                    }
                }
            }

获取多通道矩阵的值

+ (Mat)translation1:(Mat)srcImg desImg:(Mat)desImg{
    int rows = srcImg.rows;
    int cols = srcImg.cols;
    for (int i = 0;  i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            int x = j - 200;
            int y = i - 200;
            /**
             *  uchar * data01 = image.ptr(0)[1];
                data01是指向image第一行第二个元素的指针   ,感觉和 at的使用是一样的 ?????后续
             比如Vec:
             其实这句就是定义一个uchar类型的数组,长度为3而已
             */
            if (x >=0 && y >=00 && x (i,j) = srcImg.ptr(y)[x];
            }
        }
    }
    return desImg;
}

你可能感兴趣的:(OpenCV 获取像素值的几个方法)