【OpenCV】OpenCV 的文件读写操作

Backto OpenCV Index


文件格式

我选择 yaml : Yet Another Markup Language, 一种很流行的标记语言, 简洁, 清晰, 在 web 端做配置文件也很流行.

后缀是 .yml, 如 config.yml

基本语法

OpenCV 提供 FileStorage 类进行文件的读写操作.

构造函数

FileStorage fs

使用这个无参数的构造函数, 因为可以在一个程序里只开一个实例就能完成所有的操作, 不用针对每一个文件操作都构造一个实例.

打开文件

const string path_file_to_read = "xxx";
fs.open(path_file_to_read, FileStorage::READ)
  • 第一个参数是文件路径
  • 第二个参数是对文件的操作类型, 分为以下几种
    • FileStorage::READ:
    • FileStorage::WRITE:
    • FileStorage::APPEND:
    • FileStorage::MEMORY:从输入的文件(source)读取数据或把数据写入到内部缓冲器(通过FileStorage::release进行内存释放)

紧接着 使用 fs.isOpened() 来判断文件是否正常打开了, 是个好习惯.

数据的读写

基于流的处理, 使用 << 进行 WRITE, 使用 >> 进行 READ.

const int num_iterations = 10;
fs << "num_iterations" << num_iterations;
int num_iterations = 0
fs["num_iterations"] >> num_iterations;

更高级的完整的类的持久化, 看 Ref

层次化文件结构

OpenCV 提供

  • FileNode 类代表文件存储节点
  • FileNodeIterator 类来遍历文件的存储节点

文件的关闭

fs.release();

使用细节 Tips

  • fs 支持 vector 的读写, 不支持 array 的读写
  • 对于不支持的数据格式, 可以转化为 Mat 格式再读写

Ref

猜你喜欢

转载自blog.csdn.net/baishuo8/article/details/82768691