基本的数据维持和存储

Basic data persistence and storage

  在本文中,我们将探索OpenCV中存储和读取我们的数据的函数。在许多应用中,比如校准(calibration)或者机器学习,我们需要处理数据计算,就需要保存结果以备下一个执行阶段重新获取。为此,OpenCV提供了一个XML/YAML保持层(persistence layer)。

1. 写入文件存储(Write to a file storage)

  要将OpenCV数据或者其它数值数据写入到一个文件中,我们可以使用FileStorage类,位于core模块中,可以使用类似STL中的流操作方式操作FileStorage对象。

 1 // FileStorage usage
 2 #include <opencv2/core.hpp>
 3 using namespace cv;
 4 
 5 #include <iostream>
 6 using namespace std;
 7 
 8 int main(int, char** argv)
 9 {
10     // create our writter
11     FileStorage fs("test.yml", FileStorage::WRITE);
12     // Save an integer
13     int fps = 5;
14     fs << "fps" << fps;
15     // Create some Mat sample
16     Mat m1 = Mat::eye(2, 3, CV_32F);
17     Mat m2 = Mat::ones(3, 2, CV_32F);
18     Mat result = (m1 + 1).mul(m1 + 3);
19     // write the result
20     fs << "Result" << result;
21     // release the file
22     fs.release();
23 
24     FileStorage fsread("test.yml", FileStorage::READ);
25     Mat r;
26     fsread["Result"] >> r;
27     cout << r << endl;
28     fsread.release();
29 
30     return 0;
31 }

执行以上程序代码将会生成一个test.yml文件,文件内容如下所示:

%YAML:1.0
fps: 5
Result: !!opencv-matrix
   rows: 2
   cols: 3
   dt: f
   data: [ 8., 3., 3., 3., 8., 3. ]
原文地址:https://www.cnblogs.com/xiaomanon/p/5514272.html