一、 Mat的初始化
Mat的初始化,以下代码实现了mat的四种初始化方法
Mat img (512,512,CV_8UC3,Scalar(255, 255, 255));
Mat mat =Mat::zeros(512,512,CV_8UC3);
Mat mat1 =Mat::ones(512,512,CV_8UC1);
string path = "D:\\Img_data\\t1.jpg";
Mat img2 = imread(path);
二、Mat的基本属性
Mat的基本属性包含图像的宽、高;数据类型;通道数。Mat作为一个矩阵,宽对应矩阵的列数,高对应矩阵的行数。
使用imread(filename)即可将图像从文件读取到内存中,通过以下代码即可实现加载图像输出基本属性。
//Mat的基本属性
// 宽、高;数据类型;通道数
cout << "宽(列):" << mat.cols << ",高(行):" << mat.rows << endl;
cout << "数据类型: " << mat.type() << endl;
cout << "通道数: " << mat.channels() << endl;
代码执行效果:
可以看到数据类型输出的int,这是因为opencv用枚举来对应具体的数据类型,完整的数据类型对应关系如下图所示:
三、 mat的数学操作
mat可以像普通的数值一样进行减加乘除运算,需要注意的是整型的mat与整型mat的数学计算结果仍然是整数。
cv::Mat mat9 = cv::Mat::ones(9, 9, CV_16FC1)*9;
cv::Mat mat2 = cv::Mat::ones(9, 9, CV_16FC1)*2;
cv::Mat result_18 = mat2.mul(mat9);//逐像素值相乘,得到的还是一个矩阵
cv::Mat resutl_7=mat9-mat2;
cv::Mat resutl_11=mat9+mat2;
cv::Mat resutl_4_5=mat9/mat2;
四、 mat的按位运算
mat的位运算包含与或非、异或操作等。
按位与:bitwise_and
按位或:bitwise_or
按位异或:bitwise_xor
按位非:bitwise_not