OpenCV中创建Mat对象

第1章 创建Mat对象

1.1. 创建空的 Mat 对象

cv::Mat mat;

1.2. 创建灰度图像

// 创建一个 3 行 4 列、8位无符号单通道矩阵(相当于灰度图)
cv::Mat mat(3, 4, CV_8UC1);

1.3. 创建彩色图像

// 创建三通道矩阵(相当于彩色图像)
cv::Mat mat_color(480, 640, CV_8UC3);
  • CV_8UC1:8位无符号,单通道(灰度图)
  • CV_8UC3:8位无符号,三通道(彩色图)
  • CV_32FC1:32位浮点数,单通道
  • 更多类型请参考 opencv2/core/types.hpp

1.4.创建并初始化为特定值

// 初始化为全0矩阵
cv::Mat zeros = cv::Mat::zeros(3, 3, CV_8UC1);

// 初始化为全1矩阵
cv::Mat ones = cv::Mat::ones(3, 3, CV_8UC1);

// 初始化为单位矩阵
cv::Mat eye = cv::Mat::eye(3, 3, CV_32F);

1.5. 使用已有数据创建 Mat(不复制数据)

uchar data[] = {0, 1, 2, 3, 4, 5};
cv::Mat mat(2, 3, CV_8UC1, data);

1.6.从另一个 Mat 复制构造(深拷贝)

cv::Mat mat1 = cv::Mat::ones(3, 3, CV_8UC1);
cv::Mat mat2 = mat1.clone(); // 深拷贝,两个 Mat 独立

或者使用 copyTo 方法:

cv::Mat mat3;
mat1.copyTo(mat3);

1.7. 使用 std::vector 创建 Mat(适合数组处理)

std::vector vec = {1.0f, 2.0f, 3.0f, 4.0f};
cv::Mat mat_vec = cv::Mat(vec).reshape(1, 2); // reshape 成 2x2 矩阵

1.8.从图像文件加载 Mat(读取图像)

cv::Mat img = cv::imread("image.jpg");
if (img.empty()) {
    std::cerr << "无法加载图像!" << std::endl;
}

第2章 遍历像素

2.1 方式1

你可能感兴趣的:(opencv,人工智能,计算机视觉)