Mat是opencv库提供的一个用来表示矩阵的c++类,可以用来表示多维矩阵数据,对于图像数据来说,只是二维矩阵,用来表示自然不在话下。基于这个类,我们不再需要考虑图像数据的内存管理,c++自动帮我们解决。
Mat类包含两个数据部分,一个是矩阵头部(包含矩阵的size,像素的存储方法等信息),另一个是指向矩阵数据内存的指针(数据维度取决于存储方法的选择)。对于这个类的使用,需要注意的是,该类的拷贝构造函数和赋值构造函数的内部实现,只是单纯的对头部信息进行拷贝,所指向的还是同一个矩阵的数据。如果矩阵数据也需要拷贝,则可以使用cv::Mat::clone() and cv::Mat::copyTo() 函数。
几种矩阵数据的存储方法:
1. RGB,最常见的表示方法。opencv标准库采用的是BGR(将红蓝通道调换位置)
2. HSV and HLS
3. YCrCb,流行的JPEG图像所使用的格式。
4.CIE L*a*b*