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存储的文本如下