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”对应的精度相符合. }