//序列没有标签
CvMemStorage *mem = cvCreateMemStorage(0);
CvFileStorage *file = cvOpenFileStorage("e:\\123.yml", mem, CV_STORAGE_READ | CV_STORAGE_WRITE);
cvStartWriteStruct(file, NULL, CV_NODE_SEQ ); cvWriteInt(file, NULL, 123);//写入的是序列,名称都为NULL
cvWriteReal(file, NULL, 32.0);
cvWriteString(file, NULL, "123123"); int dbData[5] = {12, 3, 0, 5, 8};
const string strType = "i";
cvWriteRawData(file, dbData, 5, strType.c_str());
cvWriteComment(file, "my comment", 0);//把注释写在该行的后面 CvFileNode *node = cvGetRootFileNode(file, 0);
if (node != NULL){
printf("%s\n", node->data.str.ptr);
} cvEndWriteStruct(file);
cvReleaseFileStorage(&file);
cvReleaseMemStorage(&mem);

可以看出序列写文件没有节点

CvMemStorage *mem = cvCreateMemStorage(0);
CvFileStorage *file = cvOpenFileStorage("e:\\123.xml", mem, CV_STORAGE_READ | CV_STORAGE_WRITE);
cvStartWriteStruct(file, "UserInfo", CV_NODE_MAP ); cvWriteInt(file, "Integer", 123);//写入的是序列,名称都为NULL
cvWriteReal(file, "Real", 32.0);
cvWriteString(file, "String", "123123"); cvWriteComment(file, "my comment", 0);//把注释写在该行的后面
cvEndWriteStruct(file); cvReleaseFileStorage(&file);
cvReleaseMemStorage(&mem);

如果是MAP,就可以了

代码如下

CvMemStorage *mem1 = cvCreateMemStorage(0);
CvFileStorage *file1 = cvOpenFileStorage("e:\\123.xml", mem1, CV_STORAGE_READ); CvStringHashNode *hashNode = cvGetHashedKey(file1, "UserInfo", strlen("UserInfo"));
CvFileNode *node1 = cvGetFileNode(file1, NULL, hashNode);
if (node1 != NULL){//获取根节点名称
printf("%s\n", cvGetFileNodeName(node1));
} hashNode = cvGetHashedKey(file1, "Real", strlen("Real"));
CvFileNode *nodeReal = cvGetFileNode(file1, node1, hashNode);
if (nodeReal != NULL){//获取子节点名称
printf("%s\n", cvGetFileNodeName(nodeReal));
printf("%d\n", cvReadInt(nodeReal));
} hashNode = cvGetHashedKey(file1, "Integer", strlen("Integer"));
CvFileNode *nodeInteger = cvGetFileNode(file1, node1, hashNode);
if (nodeInteger != NULL){//获取子节点名称
printf("%s\n", cvGetFileNodeName(nodeInteger));
printf("%d\n", cvReadInt(nodeInteger));
} hashNode = cvGetHashedKey(file1, "String", strlen("String"));
CvFileNode *nodeString = cvGetFileNode(file1, node1, hashNode);
if (nodeString != NULL){//获取子节点名称
printf("%s\n", cvGetFileNodeName(nodeString));
printf("%s\n", cvReadString(nodeString));
} printf("\n");
printf("%f\n", cvReadRealByName(file1, node1, "Real"));//根据标签名获取值
printf("%s\n", cvReadStringByName(file1, node1, "String"));
printf("%d\n", cvReadIntByName(file1, node1, "Integer")); cvReleaseFileStorage(&file1);
cvReleaseMemStorage(&mem1);

版权声明:本文为博主原创文章,未经博主允许不得转载。

opencv 读写XML YML的更多相关文章

  1. 【VS开发】【计算机视觉】OpenCV读写xml文件《C++版本》

    OpenCV FileStorage类读写XML/YML文件 在OpenCV程序中,需要保存中间结果的时候常常会使用.xml / .yml文件,opencv2.0之前都是使用C风格的代码,当时读写XM ...

  2. OpenCV FileStorage类读写XML/YML文件

    本文转自:http://www.cnblogs.com/summerRQ/articles/2524560.html 在OpenCV程序中,需要保存中间结果的时候常常会使用.xml / .yml文件, ...

  3. 【VS开发】【计算机视觉】OpenCV读写xml文件《C版本》

    一些简单的XML读写操作,记之于笔记以备忘 主要功能: 1. 创建XML 2. 向XML中存储或者是读取Int float型基本数据 3. 通过创建XML元素,存取复杂的结构如:结构体.矩阵 代码如下 ...

  4. Opencv探索之路(十九):读写xml和yml文件

    有时候我们处理完图像后需要保存一下数据到文件上,以供下一步的处理.一个比较广泛的需求场景就是:我们对一幅图像进行特征提取之后,需要把特征点信息保存到文件上,以供后面的机器学习分类操作.那么如果遇到这样 ...

  5. OpenCV 读取.xml文件

    OpenCV 只提供了读取和存储.xml和.yml 文件格式的函数. 读取.xml文件的C++例程如下: cv::FileStorage fs; //OpenCV 读XML文件流 cv::Mat De ...

  6. OpenCV读写图像文件解析

    OpenCV读写图像文件解析 imdecode 从内存中的缓冲区读取图像. C++:Mat imdecode(InputArray buf, int flags) C++:Mat imdecode(I ...

  7. C#读写xml文件的常用方法

    已知有一个XML文件(bookshop.xml)如下: <?xml version="1.0" encoding="gb2312" ?> <b ...

  8. PHP读写XML文件的四种方法

    PHP对XML文件进行读写操作的方法一共有四种,分别是:字符串方式直接读写.DOMDocument读写. XMLWrite写和XMLReader读.SimpleXML读写,本文将依次对这四种方法进行介 ...

  9. 在.net中序列化读写xml方法的总结

    在.net中序列化读写xml方法的总结 阅读目录 开始 最简单的使用XML的方法 类型定义与XML结构的映射 使用 XmlElement 使用 XmlAttribute 使用 InnerText 重命 ...

随机推荐

  1. matlab练习程序(概率路线图PRM)

    PRM概率路线图全称 Probabilistic Roadmap,是一种路径规划算法,利用随机撒点的方式将空间抽样并将问题转为图搜索,利用A*或Dijkstra算法找到起始结束节点的最短路径. 可以想 ...

  2. Unity3d fbx纹理不显示 原因

    Unity3d 导入fbx文件后纹理不显示(3ds Max中显示正常) 原因: 1.纹理图片没有导入fbx同一文件夹中 2.纹理图片没有在fbx文件之前导入(现导入纹理图片,再导入fbx文件)

  3. ttf格式文件

    TTF(TrueTypeFont):是一种字库名称.TTF文件:是Apple公司和Microsoft公司共同推出的字体文件格式.要使用的下载的字体文件只要把它(*.ttf)放到C:\WINDOWS\F ...

  4. Ubuntu 16.04非编译安装Zabbix 3.2----服务端和客户端win的配置

    控服务器 - 什么是Zabbix Zabbix是企业级开源分布式监控服务器解决方案. 该软件监控网络的不同参数和服务器的完整性,还允许为任何事件配置基于电子邮件的警报. Zabbix根据存储在数据库( ...

  5. robot_framework + selenium + 上传本地文件+win7 32位

    1.下载与安装AutoIt v3  地址链接:http://pan.baidu.com/s/1hqsDFBA,我自己是32位的系统,用这个运行可以 2.安装完成后,如下图所示 3. AutoIt Wi ...

  6. Redis详解(六)——哨兵机制

    Redis详解(六)--哨兵机制 一.概述 Redis Sentinel是一个分布式系统,为Redis提供高可用性解决方案.可以在一个架构中运行多个 Sentinel 进程(progress), 这些 ...

  7. Scala 线性化规则和 super 操作

    如果一个类有多个父类,且父类的有相同的函数 f,在子类和父类中调用 super.f 都是按从右到左的调用函数的顺序. 这个规则名为:Linearization Rules 如下的代码 trait Ba ...

  8. 《Airbnb架构要点分享》阅读笔记

    Airbnb成立于2008年8月,总部位于加利福尼亚州旧金山市.Airbnb是一个值得信赖的社区型市场,在这里人们可以通过网站.手机或平板电脑发布.发掘和预订世界各地的独特房源,其业务已经覆盖190个 ...

  9. WC2020 联训 #19 矩阵

    好不容易自己切一道题 链接 Description 在一个 \(n×(n+1)\) 的棋盘上放棋子, \(n\) 行中每行都恰好有两枚棋子,并且 \(n+1\) 列中每列都至多有两枚棋子,设 \(n= ...

  10. TCP/IP 三次握手,四次断开

    TCP/IP 三次握手,四次断开 一.TCP报文格式                     TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷 本. 下面是TCP报文格式图: 图 ...