003 :FileStorage以及Mat类的使用

      1.FileStorage类是一个XML/YAML、JSON 文件存储类,用于包含所需读或者写的文件信息 ,在进行计算时候可以用这样的方式保存结果,以便于后面进行检索。

     2. Mat::eye(Height,width,Dtype)创建单位举证 ,Mat::ones(Height,width,Dtype)创建元素全部为1的矩阵,Mat::zeros(Height,width,Dtype)创建元素为0的矩阵。

     3.矩形的相乘,以及与标量相乘的方式,举证的转置以及求逆举

 1 #include "opencv2/opencv.hpp"
 2 #include<string>
 3 #include<iostream>
 4 using namespace cv;
 5 using namespace std;
 6 
 7 int main(int, char** argv)
 8 {
 9 
10     //FileStorage类是一个XML/Yaml、JSON 文件存储类,用于包含所需读或者写的文件信息
11     FileStorage fs("test.yml", FileStorage::WRITE);
12     // Save an int
13     
14     int fps= 5;
15     fs << "fps" << fps;
16     // Mat::eye创建指定类型和大小的单位矩阵
17     Mat m1= Mat::eye(2,3, CV_32F);
18     cout << "m1:" << endl << m1 << endl << endl;
19     fs << "m1" << m1;
20     //创建元素全部为1的矩阵
21     Mat m2= Mat::ones(3,2, CV_32F);
22     cout << "m2:" << endl << m2 << endl << endl;
23     fs << "m2" << m2;
24     Mat result= (m1+1).mul(m1+3);
25     // write the result
26     cout << "(m1+1).mul(m1+3)" << endl << result << endl << endl;
27     //矩阵的转置
28     Mat transpositionM = result.t();
29     cout << "result 转置" << endl << transpositionM << endl << endl;
30     //矩阵求逆
31     Mat m3 = Mat::eye(3, 3, CV_32F);
32     cout << "m3" << endl << m3 << endl << endl;
33     Mat invM = m3.inv();
34     cout << "result 逆矩" << endl << invM << endl << endl;
35 
36     fs << "Result" << result;
37     // release the file
38     fs.release();
39 
40     FileStorage fs2("test.yml", FileStorage::READ);
41 
42     Mat r;
43     fs2["Result"] >> r;
44     std::cout << r << std::endl;
45 
46     fs2.release();
47 
48     return 0;
49 }

通过cout输出的结果如下

 通过FileStorage存储的文本如下

原文地址:https://www.cnblogs.com/codeAndlearn/p/11527804.html