opencv 二 Mat的基本操作1(Mat初始化、基本属性、数学操作、位运算)

一、 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

猜你喜欢

转载自blog.csdn.net/m0_74259636/article/details/128555665