mat.data

1. data

mat.data是指向OpenCV图像或矩阵数据的指针,通过mat.data,可以获取指向图像像素数据的指针,支持访问、修改图像中的像素值

#include 

int main() {
    // 读取图像
    cv::Mat image = cv::imread("image.jpg", cv::IMREAD_COLOR);

    // 检查图像是否成功加载
    if (image.empty()) {
        std::cout << "无法加载图像" << std::endl;
        return -1;
    }

    // 获取图像的宽度和高度
    int width = image.cols;
    int height = image.rows;

    // 获取图像的通道数
    int channels = image.channels();

    // 遍历图像的像素
    for (int y = 0; y < height; y++) {
        for (int x = 0; x < width; x++) {
            // 计算像素的索引
            int index = y * width * channels + x * channels;

            // 访问像素值
            unsigned char b = image.data[index];
            unsigned char g = image.data[index + 1];
            unsigned char r = image.data[index + 2];

            // 对像素值进行操作
            // ...

            // 修改像素值
            image.data[index] = new_b;
            image.data[index + 1] = new_g;
            image.data[index + 2] = new_r;
        }
    }

    // 保存修改后的图像
    cv::imwrite("modified_image.jpg", image);

    return 0;
}

2. 像素排列方式

int index = y * width * channels + x * channels

unsigned char b = image.data[index]

unsigned char g = image.data[index + 1]

unsigned char r = image.data[index + 2]

同一像素位置的三个值是相邻的。

你可能感兴趣的:(OpenCV,c++)