FileStorage类将各种OpenCV数据结构的数据存储为XML 或 YAML格式。同时,也可以将其他类型的数值数据存储为这两种格式。
构造函数
FileStorage类的构造函数为:

cv::FileStorage(const string& source, int flags, const string& encoding=string());

参数:

  • source –存储或读取数据的文件名(字符串),其扩展名(.xml 或 .yml/.yaml)决定文件格式。

  • flags – 操作模式,包括:

    • FileStorage::READ 打开文件进行读操作
    • FileStorage::WRITE 打开文件进行写操作
    • FileStorage::APPEND打开文件进行附加操作
    • FileStorage::MEMORY 从source读数据,或向内部缓存写入数据(由FileStorage::release返回)

    encoding – 文件编码方式。目前不支持UTF-16 XML 编码,应使用 8-bit 编码。

写数据operator <<
向filestorage中写入数据

template<typename_Tp> FileStorage& operator<<(FileStorage& fs, const _Tp& value)
template<typename_Tp> FileStorage& operator<<(FileStorage& fs, const vector<_Tp>& vec)
//参数:
// fs – 已经打开的用于写数据的file storage对象
// value – 待写入fs 的数据.
// vec – 待写入fs 的向量值

打开文件:FileStorage::open

boolFileStorage::open(const string& filename, int flags, const string&encoding=string())
//参数:
//filename – 待打开的文件名,其扩展名(.xml 或 .yml/.yaml) 决定文件格式(XML 或 YAML)
//flags – 操作模式。见构造函数
//encoding – 文件编码方式。

检查文件是否已经打开:FileStorage::isOpened

boolFileStorage::isOpened()

存储或读取操作完成后,需要关闭文件并释放缓存:FileStorage::release

void FileStorage::release()

参考:https://blog.csdn.net/iracer/article/details/51339377

更多推荐