opencv 读写XML YML
//序列没有标签
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的更多相关文章
- 【VS开发】【计算机视觉】OpenCV读写xml文件《C++版本》
OpenCV FileStorage类读写XML/YML文件 在OpenCV程序中,需要保存中间结果的时候常常会使用.xml / .yml文件,opencv2.0之前都是使用C风格的代码,当时读写XM ...
- OpenCV FileStorage类读写XML/YML文件
本文转自:http://www.cnblogs.com/summerRQ/articles/2524560.html 在OpenCV程序中,需要保存中间结果的时候常常会使用.xml / .yml文件, ...
- 【VS开发】【计算机视觉】OpenCV读写xml文件《C版本》
一些简单的XML读写操作,记之于笔记以备忘 主要功能: 1. 创建XML 2. 向XML中存储或者是读取Int float型基本数据 3. 通过创建XML元素,存取复杂的结构如:结构体.矩阵 代码如下 ...
- Opencv探索之路(十九):读写xml和yml文件
有时候我们处理完图像后需要保存一下数据到文件上,以供下一步的处理.一个比较广泛的需求场景就是:我们对一幅图像进行特征提取之后,需要把特征点信息保存到文件上,以供后面的机器学习分类操作.那么如果遇到这样 ...
- OpenCV 读取.xml文件
OpenCV 只提供了读取和存储.xml和.yml 文件格式的函数. 读取.xml文件的C++例程如下: cv::FileStorage fs; //OpenCV 读XML文件流 cv::Mat De ...
- OpenCV读写图像文件解析
OpenCV读写图像文件解析 imdecode 从内存中的缓冲区读取图像. C++:Mat imdecode(InputArray buf, int flags) C++:Mat imdecode(I ...
- C#读写xml文件的常用方法
已知有一个XML文件(bookshop.xml)如下: <?xml version="1.0" encoding="gb2312" ?> <b ...
- PHP读写XML文件的四种方法
PHP对XML文件进行读写操作的方法一共有四种,分别是:字符串方式直接读写.DOMDocument读写. XMLWrite写和XMLReader读.SimpleXML读写,本文将依次对这四种方法进行介 ...
- 在.net中序列化读写xml方法的总结
在.net中序列化读写xml方法的总结 阅读目录 开始 最简单的使用XML的方法 类型定义与XML结构的映射 使用 XmlElement 使用 XmlAttribute 使用 InnerText 重命 ...
随机推荐
- redis单线程为什么快?
- Linux centosVMware 命令 lvm、磁盘故障小案例
一.lvm命令 LVM:逻辑分区管理,可基于动态的扩展缩小硬件设备的使用空间,注意:lvm磁盘复杂,由于使用lvm,数据丢失恢复起来有一定风险.概念:pv.VG.lvpv(物理卷,有pp基本单位构成) ...
- 7. 通过JDBC源码来分析线程上下文类加载器以及SPI的使用
目录 1. 什么是全盘负责委托机制 2. 为什么需要有线程上下文类加载器 2.1 使用JDBC的例子,分析为什么双亲委托机制不能实现要求 2.2 线程上下文类加载器的作用 3. 线程上下文类加载器的使 ...
- 防火墙、WAF、IPS、IDS都是什么
防火墙 (Firewall) 别名防护墙,于1993发明并引入国际互联网. 他是一项信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过.在网络中,所谓的防火墙是指一种将内网和外网分开的方法 ...
- Python集合语法
a = {1,2,3,4,5,6,7,8,"aa","2"} b = {2,3,4,5,6,7,8,9,99,7,6,6} v = a.intersect ...
- CSP-J/S2019试题选做
S D1T2 括号树 设\(f[u]\)表示根到\(u\)的路径上有多少子串是合法括号串.(即题目里的\(k_u\),此变量名缺乏个性,故换之) 从根向每个节点dfs,容易求出\(c[u]\):表示从 ...
- P1090 危险品装箱
1090 危险品装箱 (25分) 集装箱运输货物时,我们必须特别小心,不能把不相容的货物装在一只箱子里.比如氧化剂绝对不能跟易燃液体同箱,否则很容易造成爆炸. 本题给定一张不相容物品的清单,需要你 ...
- 微信小程序—显示当前时间
问题: 在页面上显示当前时间(日期) 方法: 1.在util.js (创建项目自动生成)中: // util.js const formatTime = date => { const yea ...
- 031、Java中偶数偶数的判断方法
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- putty Linux 自动补全
用putty连接Ubuntu16.04后,输入命令后按tab键,不自动补全,对上下键无历史命令,$符号顶格显示,无用户名.主机名, 这是由于默认用的sh,可以直接调用bash,进入bash: