由于项目的需要,在进行测试的时候,需要将文件写入,然后再进行读出.这个过程之中,一开始我就是直接复制来,复制过去,发现麻烦的很.这个过程只需要将数据写入一个文件中,之后使用的时候直接在文件之中进行读取就是可以的.
一开始我是用的.txt文件进行的写入操作,写入结果如下图所示
试想一下,再进行测试的时候,需要用到这些矩阵,还需要在别的资料中重写,如下面似的.
反反复复写了很多遍,如果要是使用相应的.txt文件的读取方式是不是很麻烦.
因此,我就想到了要不要使用相应的.xml文件(这是一个前端学过的东西,很简单,就是什么标签啥的).这里我是使用了一个.yaml文件进行的,原理和.xml文件是差不多的.
查了一下相关的资料,很多的例程是使用OpenCV和这个.yaml文件搭配使用的,因此,这个思路是完全对的.
#include<iostream>
#include<vector>
#include<string>
#include <opencv2/opencv.hpp>
#include "opencv/highgui.h"
using namespace std;
using namespace cv;
int main(int argc, char** argv) {
string filename = "datas.yaml";//文件的名称
FileStorage fwriter(filename, FileStorage::WRITE);
//存入矩阵Mat类型的数据
Mat mat = Mat::eye(3, 3, CV_8U);
fwriter.write("mat", mat);//使用write()函数写入数据
fwriter.release();
//以读取的模式打开文件
FileStorage fread(filename, FileStorage::READ);
//判断是否打开成功
if (!fread.isOpened()) {
cout << "打开文件失败,请确认文件名称是否正确!" << endl;
return -1;
}
//读取Mat类型数据
Mat matRead;
fread["mat"] >> matRead;
cout << "mat = " << matRead<< endl;
//关闭文件
fread.release();
return 0;
}
输出如下所示: