首页 > 解决方案 > 我无法遍历所有图像的像素,它正在遍历其中的一部分。开放式CV

问题描述

我有以下代码:

void white(Mat&src,Mat&dst){

    double h = src.cols;
    double w = src.rows;

    dst = src.clone();

    for (int i = 0; i < dst.rows; i++) {
        for (int j = 0; j < dst.cols; j++) {
            dst.at<uchar>(i, j) = 255;
        }
    }
}

我的预期结果是得到一个完全白色的图像,但是,我得到了这个结果:

输入图像:

输出图像:

标签: c++opencv

解决方案


是彩色图像。每个像素由 3 个值组成。您必须设置每个颜色通道

void white(Mat&src,Mat&dst){
  double h = src.cols;
  double w = src.rows;
  dst = src.clone();
  for (int i = 0; i < dst.rows; i++) {
    for (int j = 0; j < dst.cols; j++) {
      for (std::size_t c = 0; c < 3; ++c) {
        dst.at<Vec3b>(i, j)[c] = 255;
      }
    }
  }
}

推荐阅读