OpenCV之XML和YAML文件读写

作者: HeoLis | 来源:发表于2018-01-28 17:53 被阅读56次

FileStorage类

该类有两个构造函数

FileStorage::FileStorage()
FileStorage::FileStorage(const string& source, int flags, const string& endcoding=string())

准备

对应第一种方法

FileStorage fs;
fs.open("abc.xml", FileStorage::WRITE);

对应第二种方法

FileStorage fs("abc.xml", FileStorage::WRITE);

第一种方式

FileStorage fs("abc.xml", FileStorage::READ);

第二种方式

FileStorage fs;
fs.open("abc.xml", FileStorage::READ);

读写

可用"<<"运算符进行写操作

fs << "iterationNr" << 100;

用">>"运算符进行读操作

int itNr;
fs["iterationNr"] >> itNr;
itNr = (int)fs["iterationNr"];

数据结构输入输出

OpenCV数据结构的输入和输出,和基本的C++形式相同

// 数据结构初始化
Mat R = Mat_<uchar>::eye(3, 3);
Mat T = Mat_<double>::zeros(3, 1);

// 向Mat中写入数据
fs << "R" << R;
fs << "T" << T;

// 从Mat中读取数据
fs["R"] >> R;
fs["T"] >> T;

vector(arrays) 和maps的输入输出

对于vector结构的输入和输出,要注意在第一个元素前加上“[”,在最后一个元素后加上“]”。

fs << "strings" << "[";   //开始读入string文本序列
fs << "image1.jpg" << "Awesomeness" << "baboon.jpg";
fs << "]";  //关闭序列

对于map结构的操作,使用的符号是“{” 和 “}”

fs << "Mappimg";  //开始读入mapping文本
fs << "{" << "One" << 1;
fs << "Two" << 2 << "}";

读取这些结构的时候会用到FileNode和FileNodeIterator数据结构。对FileStorage类的“[" 、 "]”操作符会返回FileNode数据结构;对于一连串的node可以使用FileNodeIterator结构。

FileNode n = fs["strings"];   //读取字符串序列以得到节点
if (n.type() != FileNode::SEQ) {
  std::cerr << "发生错误!字符串不是一个序列!" << '\n';
  return 1;
}
FileNodeIterator it = n.begin(), it_end = n.end();  //遍历节点
for (; it != it_end; ++it)) {
  std::cout << (string)*it << '\n';
}

文件关闭

文件关闭操作会在FileStorage类销毁时自动进行,但也可以显示调用其析构函数FileStorage::release()实现。FileStorage::release()函数会析构掉FileStorage类对象,同时关闭文件。

fs.release();

相关文章

  • OpenCV之XML和YAML文件读写

    FileStorage类 该类有两个构造函数 准备 写 对应第一种方法 对应第二种方法 读 第一种方式 第二种方式...

  • Ansible基础使用

    零、相关准备 0.1 YAML语法 YAML类似XML或JSON,易于读写 对于Ansible,每一个YAML文件...

  • OpenCV 之ios 输入输出XML和YAML文件

    目的 你将得到以下几个问题的答案: 如何将文本写入YAML或XML文件,及如何从从OpenCV中读取YAML或XM...

  • 通过snakeyaml解析yaml文件

    scala 读取yaml 配置文件 配置maven文件pom.xml 创建yaml 文件config.yaml ...

  • YAML 入门指南

    YAML 入门指南 YAML 简介 我们使用 YAML 是因为它像 XML 或 JSON 是一种利于人们读写的数据...

  • 读写YAML文件

    最近想着实现一个能够运动的障碍物,结果搞出一大堆的概念需要整理! 1. 依赖库 在网上找到一个用于解析和构造YAM...

  • 180619-Yaml文件语法及读写小结

    Yaml文件小结 Yaml文件有自己独立的语法,常用作配置文件使用,相比较于xml和json而言,减少很多不必要的...

  • xml编程

    一个xml文件除了我们人去读写之外,还可以通过电脑去读写,通过电脑去读写xml文件的过程就是xml编程的过程。1,...

  • 【python】图像识别之人脸识别

    1.安装opencv: pip install opencv-python xml文件下载:https://git...

  • 通过yaml渲染salt配置

    说明 yaml模块类似xml的标记语言,一般用在配置文件中,比如salt 实例 yaml文件(salt配置文件为例...

网友评论

    本文标题:OpenCV之XML和YAML文件读写

    本文链接:https://www.haomeiwen.com/subject/yejzaxtx.html