OpenCV修改图像像素

Bur*_*kay 0 c++ opencv image image-processing

我想修改图像的每个像素.但结果并不像我预期的那样.

原始图片:

在此输入图像描述

结果:

在此输入图像描述

For循环修改每个像素:

image = imread("image.png", CV_LOAD_IMAGE_COLOR)
unsigned char value;

for (int col = 0; col < image.cols; col++){
   for (int row = 0; row < image.rows; row++){
        value = image.at<unsigned char>(row,col);
        value *= 0;
        image.at<unsigned char>(row, col) = value;
   }
}
Run Code Online (Sandbox Code Playgroud)

所以我不知道错误在哪里,我想问你是否知道答案.

zin*_*rod 6

对于3通道无符号字符图像,您需要在Vec3b遍历行和列时使用所有3个通道.

image = imread("image.png", CV_LOAD_IMAGE_COLOR)
Vec3b value;

for (int row = 0; row < image.rows; row++){
   for (int col = 0; col < image.cols; col++){
        //Vec3b as typename
        value = image.at<Vec3b>(row,col);
        value *= 0;
        image.at<Vec3b>(row, col) = value;
   }
}
Run Code Online (Sandbox Code Playgroud)