Mat类型
定义:CV_<bit_depth>(S|U|F)C<number_of_channels>
1、bit_depth—位数—代表8bite,16bites,32bites,64bites 对应每个像素值变量类型为char、short、int、long
2、S|U|F
S代表signed int有符号整形
U代表unsigned int无符号整形
F代表float单精度浮点型
3、C<number_of_channels>----代表—一张图片的通道数,比如:
1--灰度图片--grayImg---是--单通道图像
2--RGB彩色图像---------是--3通道图像8U 对应像素值类型为<Vec3b>
3--带Alph通道的RGB图像--是--4通道图像
矩阵运算:
对于一般的矩阵运算,如加、减、乘、转置、求逆等,都可以直接调用OpenCV库中的函数,如,求一个矩阵的转置:
Mat m1= Mat::eye(2,3, CV_32F);
Mat m2= Mat::ones(3,2, CV_32F);
//求转置
m1.t();
//求逆
m1.inv();
//矩阵相乘
m1*m2;
在做矩阵相乘的时候要注意,参与计算的两个Mat矩阵的数据类型(type)只能是 CV_32F、 CV_64FC1、 CV_32FC2、 CV_64FC2 这4种类型中的一种。若选用其他类型,编译器会报错。具体还不清楚为什么会这样。
矩阵遍历
Mat image(row,col,CV_16FC1);
for (int i = 0;i < row;i++)
for (int j = 0;j < col;j++)
{
depth.at<float>(i, j) = 数值;//注意这里.at<>尖括号里的类型是float类型,
//应与前面说的“F”对应的精度相符合.
}