This question already has an answer here:
Accessing pixel values OpenCV 2.3 - C++
(1个答案)
3年前关闭。
我想修改图像的每个像素。但是结果却不像我预期的那样。
原始图片:
![c++ - OpenCV修改图像像素-LMLPHP c++ - OpenCV修改图像像素-LMLPHP]()
结果:
![c++ - OpenCV修改图像像素-LMLPHP c++ - OpenCV修改图像像素-LMLPHP]()
For循环修改每个像素:
所以我不知道错误在哪里,我想问你是否知道答案。
(1个答案)
3年前关闭。
我想修改图像的每个像素。但是结果却不像我预期的那样。
原始图片:
结果:
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;
}
}
所以我不知道错误在哪里,我想问你是否知道答案。
最佳答案
对于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;
}
}
关于c++ - OpenCV修改图像像素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46426249/