一些简单的XML读写操作,记之于笔记以备忘

主要功能:

1. 创建XML

2. 向XML中存储或者是读取Int float型基本数据

3. 通过创建XML元素,存取复杂的结构如:结构体、矩阵

代码如下

// BasicExample.cpp : Defines the entry point for the console application.
// #include "stdafx.h"
#include <iostream>
#include "opencv2/opencv.hpp" using namespace std; int _tmain(int argc, _TCHAR* argv[])
{
//创建XML文件存储
CvFileStorage* fs = cvOpenFileStorage("jarvischu.xml",
0, //用于存储的内存,如果为NULL,则会使用一个临时内存
CV_STORAGE_WRITE,
"GB2312"//编码
);
//写入数据 cvWriteInt(fs,"frame_count",10); //--写Int
cvWriteReal(fs,"pi",3.14); //--写Float //--写结构体
cvStartWriteStruct(fs,"frame_size",CV_NODE_MAP,"id_size" );// 有名称(会新建一个标签)
cvWriteInt(fs,"width",320);
cvWriteInt(fs,"height",200);
cvEndWriteStruct(fs); cvStartWriteStruct(fs,"author_info",CV_NODE_SEQ,"id_author");// 无名称
cvWriteString(fs,0,"JarvisChu");
cvWriteString(fs,0,"China");
cvEndWriteStruct(fs); //--写矩阵
unsigned char vec[]={1,2,3,4,5,6,7,8,9};
CvMat mat = cvMat(3,3,CV_8UC1,vec);
cvWrite(fs,"Matrix",&mat); //--写注释
cvWriteComment(fs,"This is a example for operatoring the xml file",0);//不为0表示放在当前行,0表示新行 //释放
cvReleaseFileStorage(&fs); //打开XML文件
fs = cvOpenFileStorage("jarvischu.xml",
0, //用于存储的内存,如果为NULL,则会使用一个临时内存
CV_STORAGE_READ,
"GB2312"//编码
); //读取数据
int f = cvReadIntByName(fs,0,"frame_count",0);//读取有名字的Int //--读取元素数据
CvFileNode* fn = cvGetFileNodeByName(fs,0,"frame_size"); //先读取父元素(标签,节点)
int width = cvReadIntByName(fs,fn,"width"); //通过父元素读取子元素
int height = cvReadIntByName(fs,fn,"height"); //--读取元素内的顺序数据
fn = cvGetFileNodeByName(fs,0,"author_info");//先读取元素
CvSeq* seq = fn->data.seq; //获取元素的顺序流
const char* name = cvReadString((CvFileNode*)cvGetSeqElem(seq,0));//读取顺序流中数据 0
const char* country = cvReadString((CvFileNode*)cvGetSeqElem(seq,1));//读取顺序流中数据 1 cout<<"frame_count:"<<f<<endl<<"width:"<<width<<endl<<"height"<<height<<endl\
<<"name:"<<name<<endl<<"country:"<<country<<endl; return 0;
}

运行结果如下

jarvischu.xml文件如下

【VS开发】【计算机视觉】OpenCV读写xml文件《C版本》的更多相关文章

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

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

  2. cocos2d-x 读写 xml 文件

    cocos2d-x 读写 xml 文件 A product of cheungmine使用cocos2d-x开发2d游戏确实方便,但是对于一般的小游戏,经常需要的工作是UI布局设计和调整,代码改来改去 ...

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

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

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

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

  5. Java 读写XML文件 API--org.dom4j

    om4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个十分优秀的JavaXML API,具有性能优异.功能强大和极其易使用的特点,同时它也是一个开放源代码的软件 ...

  6. OpenCV 读取.xml文件

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

  7. Fixflow引擎解析(三)(模型) - 创建EMF模型来读写XML文件

    Fixflow引擎解析(四)(模型) - 通过EMF扩展BPMN2.0元素 Fixflow引擎解析(三)(模型) - 创建EMF模型来读写XML文件 Fixflow引擎解析(二)(模型) - BPMN ...

  8. java通过dom读写xml文件

    java通过dom读写xml文件 要读的xml文件 <?xml version="1.0" encoding="GB2312"?><学生花名册 ...

  9. C# 读写XML文件的方法

    C# 读写XML文件的方法 一.写XML文件 XmlDocument xmlDocument = new XmlDocument();xmlDocument.AppendChild(xmlDocume ...

随机推荐

  1. canvas drawImage图片不显示问题

    初次学习canvas,用来做笔记记录下遇到的问题及解决方案 这里是要将一张图片写到canvas里,按照网上搜索,初写了段代码,可是却没显示,以为是路径问题,不能跨域名使用,后来改为相对路径后,仍然无效 ...

  2. nginx+tomcat遇到的https重定向到http问题

    nginx做反向代理时,需要把请求头信息一起发送给tomcat,不然tomcat中的域名绑定就无法发挥作用了. 今天又遇到https请求被拦截器重定向到登陆页居然变成http的问题,导致小程序无法访问 ...

  3. 解决CMD控制台乱码问题

    在cmd控制台中出现乱码情况如下 解决方式1 在控制台中输入    CHCP65001 按enter回车键查看 注:CHCP是一个计算机指令,能够显示或设置活动代码页编号. 代码页    描述6500 ...

  4. nginx配置项

    try_files location / { try_files $uri $uri/ /index.php?$query_string; } 当用户请求 http://host/instance时, ...

  5. Luogu P2532 [AHOI2012]树屋阶梯 卡特兰数

    接着压位OvO... 我不会告诉你答案就是卡特兰数... 为什么呢? 首先,$ans[0]=1,ans[1]=1,ans[2]=2$ 对于$ans[3]$,我们可以发现他是这样来的: $ans[3]= ...

  6. 洛谷P2796 Facer的程序

    洛谷题目链接 动态规划 我们看题目后知道这是一棵无根树,要求出有多少子树 我们设$f[u][1]$表示选了当前节点$u$的方案数 相反的$f[u][0]$则为不选中$u$ 那么考虑状态转移如下: f[ ...

  7. [Luogu] 树

    https://www.luogu.org/problemnew/show/P4092 树剖 + 线段树区间修改,单点查询 #include <bits/stdc++.h> using n ...

  8. codeforces#1183H. Subsequences(字符串dp)

    题目链接: http://codeforces.com/contest/1183/problem/H 题意: 给出一个长度为$n$的字符串,得到$k$个子串,子串$s$的花费是$n-|s|$ 计算最小 ...

  9. JavaWeb_(Hibernate框架)Hibernate论坛项目中多对多案例

    基于SSH论坛小型项目 传送门 用户和发帖进行举例 多对多关系:多个用户可以回复多个帖子 因此引入了一张回复表,用来保存用户id和帖子id CREATE TABLE `hforum`.`answer` ...

  10. asp.net webAPI

    Get: 1.Get参数传递的本质是url字符串拼接:2.url字符串长度受限制:3.Get参数传递在Http请求头部传递,而不支持Request-Body传递:4.Get类型的方法支持参数为基本类型 ...