//序列没有标签
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. java学习-循环结构-递归练习1-汉诺塔问题

    相传在印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏.该游戏是在一块铜板装置上,有三根杆(编号A.B.C),在A杆自下而上.由大到小按顺序放置64个金盘(如下图).游戏的目标:把A杆上的金盘全部移 ...

  2. GoJS组织结构图2

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. 面试题23从上到下打印二叉树+queue操作

    //本题思路就是层次遍历二叉树,使用一个队列来模拟过程 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *ri ...

  4. leetcode142 Linked List Cycle II

    """ Given a linked list, return the node where the cycle begins. If there is no cycle ...

  5. mysql文件理解

    mysql_Innodb的undo_log和redo_log 原创 2014年10月28日 11:26:34   众所周知,mysql支持多种存储引擎,现在常用的是MyISAM和InnoDB.MyIS ...

  6. java多线程(待完善)

    1.小型系统 // 线程完成的任务(Runnable对象)和线程对象(Thread)之间紧密相连 class A implements Runnable{ public void run(){ // ...

  7. OpenResty 实现项目的灰度发布

    1.安装 openresty 依赖模块: [root@Centos opt]# yum -y install pcre-devel openssl openssl-devel postgresql-d ...

  8. 快速为Eclipse配置PyDev插件

    想学习Python,查询网络之后发现PyDev是很好的插件,所以就想为Eclipse配置它.结果在整个配置的过程中出现了各种问题,版本问题,重复问题,反正乱七八糟的,本身安装一次的时间就很长,中间出现 ...

  9. JS - 判断字符串某个下标的值

    <html><body> <script type="text/javascript"> var str="0123456789!&q ...

  10. R 读取回归模型的信息

    参考博客: http://blog.sina.com.cn/s/blog_8f5b2a2e0101fmiq.html https://blog.csdn.net/huangyouyu523/artic ...