逐像素修改图像

在 OpenCV 中,图像可以是 RGB / BGR,HSV,灰度,黑白等。在处理图像之前了解数据类型至关重要。

图像数据类型主要是 CV_8UC3(具有 3 个通道的 uchar 矩阵)和 CV_8U(具有 1 个通道的 uchar 矩阵),但是,也可以转换为其他类型,例如 CV_32FC3,CV_64F。 (见数据类型

考虑一下,图像是由 imread 函数读取的 RGB 图像。

Mat rgb = imread('path/to/rgb/image', CV_LOAD_IMAGE_COLOR);
//to set RED pixel value of (i,j)th to X,
rgb.at<Vec3b>(i,j)[0] = X;

同样,如果图像是灰度级的,

gray.at<uchar>(i,j) = X;

请注意,在 OpenCV 中,黑白图像存储为 CV_8U 类型,值为 0 和 255.因此,更改 BW 图像与灰度图像相同。