Mat是OpenCV存储对象单元,一般我们在存储或者转换数据时,都需要用到它。
1.创建Mat对象
// 创建一个 1280x1024的 8 位无符号型 4 通道全 0 的 Mat
cv::Mat mBGRAImg = cv::Mat::zeros(1280, 1024, CV_8UC4);
// 创建一个 1280x1024的 8 位无符号型 1 通道全 0 的 Mat
cv::Mat mGrayImg = cv::Mat::zeros(1280, 1024, CV_8UC1);
对于 type,格式为:CV_位数+数值类型+C通道数,例如:
CV_8UC1 表示:单通道阵列,8bit 无符号整数
CV_8UC4 表示:4 通道阵列,8bit 无符号整数
CV_32FC1 表示:单通道阵列,32bit float 型
2、给 Mat 赋值:
(1). 从文件中读取图片到 Mat 中:
// 从文件中读取内容到 Mat 中
cv::Mat image = cv::imread(file_path, cv::IMREAD_UNCHANGED);
// 将 RGBA 数据转成灰度数据
cv::Mat gray;
cv::cvtColor(image, gray, cv::COLOR_RGBA2GRAY);
(2). 将 RGBA 裸数据赋值给 Mat: