//序列没有标签
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. rsa免密钥登陆

    #第一步 生成密钥,一路回车就行 ssh-keygen -t rsa #第二步 将密钥拷贝到目标服务器上,注意双引号 ssh-copy-id -i ~/.ssh/id_rsa.pub "ro ...

  2. 对于strlen()函数的一点小疑问

    看csapp时候,看一下char*[8],以为char*也是一字节,但是指针是地址,64位编译器下是8字节,所以sizeof(B)是64字节 后来又看strlen(). #include"s ...

  3. 统计学习方法——KD树最近邻搜索

    李航老师书上的的算法说明没怎么看懂,看了网上的博客,悟出一套循环(建立好KD树以后的最近邻搜索),我想应该是这样的(例子是李航<统计学习算法>第三章56页:例3.3): 步骤 结点查询标记 ...

  4. 吴裕雄--天生自然JAVAIO操作学习笔记:File类

    import java.io.File ; import java.io.IOException ; public class FileDemo01{ public static void main( ...

  5. 题解 loj3050 「十二省联考 2019」骗分过样例

    CASE \(1\sim 3\) \(n\)组测试数据,每次输入一个数\(x\),求\(19^x\). 测试点\(1\),\(x=0,1,\dots n-1\),可以直接递推. 测试点\(2\)要开l ...

  6. 部署 Prometheus Operator【转】

    本节在实践时使用的是 Prometheus Operator 版本 v0.14.0.由于项目开发迭代速度很快,部署方法可能会更新,必要时请参考官方文档. 下载最新源码 git clone https: ...

  7. git 的那点东西,随心记

    目前常用的项目版本管理,协同开发的工具有SVN和GIT,本次就记录一下GIT的基本使用. git下载地址:https://git-scm.com/downloads *根据自己的操作系统进行选择(这里 ...

  8. node - DeprecationWarning: Mongoose: `findOneAndUpdate()` and `findOneAndDelete()` without the `use

           1,  原因是因为:findOneAndUpdate()内部会使用findAndModify驱动,驱动即将被废弃,所以弹出警告!附上官方解释:Mongoose v5.5.8: Depre ...

  9. 微信小程序—页面跳转

    问题: 实现页面跳转:index页面通过按钮跳转到next页面 方法: 1.页面index.wxml增加一个按钮 // index.wxml <button bindtap="jump ...

  10. 027、MySQL字符串替换函数,文本替换函数,字符串填充函数

    #文本填充 ,'); #ABC12121212121212121 #文本替换 SELECT REPLACE('田攀520','攀','ABC'); #田ABC520 不忘初心,如果您认为这篇文章有价值 ...