来源:Opencv的Mat内容小记 - 知乎 (zhihu.com)
1.Mat是一种图像容器,是二维向量。
灰度图的Mat一般存放<uchar>类型
RGB彩色图像一般存放<Vec3b>类型。
(1)单通道灰度图数据存放样式:
(2)RGB三通道彩色图存放形式不同,每列并列存放通道数据的子列(顺序:BGR)
OpenCV学习笔记:Mat类详解(一) - 月夜_1 - 博客园 (cnblogs.com)
1.构造函数:
cv::Mat::Mat(Size size,int type )
Size类等效于一个成对数据,size::Size(cols,rows)
这里是先列再行。
Mat src1(3,4,CV_32FC3);
Mat src2(Size(3,4),CV_32FC3);
cout<<"src1.rows="<<src1.rows<<"src1.cols="<<src1.cols<<endl;
cout<<"src2.rows="<<src2.rows<<"src2.cols="<<src2.cols<<endl;
cout<<"src1.size="<<src1.size()<<"src2.size="<<src2.size()<<endl;
输出:
src1.rows=3src1.cols=4
src2.rows=4src2.cols=3
src1.size=[4 x 3]src2.size=[3 x 4]
2.构造函数:
cv::Mat::Mat(int ndims,const int * sizes,int type,const Scalar& s)
实例:
Mat src1(300,400,CV_8UC3,Scalar(255,255,255));
imshow("src",src1);
通过Scalar数据类来初始化元素值。参数顺序是BGR。
3.At函数:
功能:访问矩阵元素。
函数原型:template<typename _Tp> _Tp& at(int row, int col);
Mat src1(300,400,CV_8UC3,Scalar(0,255,255));
imshow("src",src1);
uchar elem;
elem=src1.at<uchar>(0,0);
qDebug()<<elem;
elem=src1.at<uchar>(0,1);
qDebug()<<elem;
elem=src1.at<uchar>(0,2);
qDebug()<<elem;
输出结果:
0
255
255
4.Channels函数:
int cv::Mat::channels () const
返回图像的通道数
Mat src1(300,400,CV_8UC3,Scalar(0,255,255));
imshow("src",src1);
qDebug()<<src1.channels();
结果:3