cv::Mat是OpenCV定义的用于表示任意维度的稠密数组,OpenCV使用它来存储和传递图像,理解它对我们操作图像是有帮助的,本文将介绍cv::Mat的初始化方式、内置方法等。
元素类型定义
由于cv::Mat要用于存储图像,它里面的元素可以是“像素”,对于像素,OpenCV定义了专门的数据格式来描述它们。
“像素”的数据格式----命名规则:
基本数据类型 + 通道数
CV_{8U, 16S, 16U, 32S, 32F, 64F}C{1, 2, 3}
例如:CV_8UC3: 三通道、每个通道是unsigned char类型的数据
{8U, 16S, 16U, 32S, 32F, 64F}:
8U:unsigned char ; 16S: short int ; 16U: unsigned short int ; 32F: float ; 64F: double
{1,2,3}代表通道数,彩色图像每个像素需要存储B、G、R(蓝、绿、红)3个信息,需要3个位置, 每一个称为一个“颜色通道”
灰度图像无颜色,只有一个通道,故常为CV_8UC1
。
cv::Mat类
//使用示例:
//默认构造函数与值构造函数
cv::Mat img; //默认构造函数
//值构造函数1
cv::Mat img1(480, 640, CV_8UC3); //图像高(行)480-row,宽(列)640-col, 数据类型:CV_8UC3
//值构造函数2
//cv::Scalar(B, G, R)可以表示三通道颜色,这里所示为纯蓝色
cv::Mat img2(480, 640, CV_8UC3, cv::Scalar(255, 0, 0));
//值构造函数3
//效果与上面一样
cv::Size sz3(480, 640);
cv::Mat img3(sz3, CV_8UC3, cv::Scalar(255, 0, 0