OpenCV之XML和YAML文件读写
FileStorage类
该类有两个构造函数
FileStorage::FileStorage()
FileStorage::FileStorage(const string& source, int flags, const string& endcoding=string())
准备
写
对应第一种方法
FileStorage fs;
fs.open("abc.xml", FileStorage::WRITE);
对应第二种方法
FileStorage fs("abc.xml", FileStorage::WRITE);
读
第一种方式
FileStorage fs("abc.xml", FileStorage::READ);
第二种方式
FileStorage fs;
fs.open("abc.xml", FileStorage::READ);
读写
可用"<<"运算符进行写操作
fs << "iterationNr" << 100;
用">>"运算符进行读操作
int itNr;
fs["iterationNr"] >> itNr;
itNr = (int)fs["iterationNr"];
数据结构输入输出
OpenCV数据结构的输入和输出,和基本的C++形式相同
// 数据结构初始化
Mat R = Mat_<uchar>::eye(3, 3);
Mat T = Mat_<double>::zeros(3, 1);
// 向Mat中写入数据
fs << "R" << R;
fs << "T" << T;
// 从Mat中读取数据
fs["R"] >> R;
fs["T"] >> T;
vector(arrays) 和maps的输入输出
对于vector结构的输入和输出,要注意在第一个元素前加上“[”,在最后一个元素后加上“]”。
fs << "strings" << "["; //开始读入string文本序列
fs << "image1.jpg" << "Awesomeness" << "baboon.jpg";
fs << "]"; //关闭序列
对于map结构的操作,使用的符号是“{” 和 “}”
fs << "Mappimg"; //开始读入mapping文本
fs << "{" << "One" << 1;
fs << "Two" << 2 << "}";
读取这些结构的时候会用到FileNode和FileNodeIterator数据结构。对FileStorage类的“[" 、 "]”操作符会返回FileNode数据结构;对于一连串的node可以使用FileNodeIterator结构。
FileNode n = fs["strings"]; //读取字符串序列以得到节点
if (n.type() != FileNode::SEQ) {
std::cerr << "发生错误!字符串不是一个序列!" << '\n';
return 1;
}
FileNodeIterator it = n.begin(), it_end = n.end(); //遍历节点
for (; it != it_end; ++it)) {
std::cout << (string)*it << '\n';
}
文件关闭
文件关闭操作会在FileStorage类销毁时自动进行,但也可以显示调用其析构函数FileStorage::release()实现。FileStorage::release()函数会析构掉FileStorage类对象,同时关闭文件。
fs.release();
OpenCV之XML和YAML文件读写的更多相关文章
- OpenCV——输入输出XML和YAML文件
- OpenCV 输入输出XML和YAML文件
#include <opencv2/core/core.hpp> #include <iostream> #include <string> using names ...
- opencv 3 core组件进阶(3 离散傅里叶变换;输入输出XML和YAML文件)
离散傅里叶变换 #include "opencv2/core/core.hpp" #include "opencv2/imgproc/imgproc.hpp" ...
- OPENCV(3) —— 对XML和YAML文件实现I/O 操作
XML\YAML文件在OpenCV中的数据结构为FileStorage string filename = "I.xml"; FileStorage fs(filename, Fi ...
- 对XML和YAML文件实现I/O操作
1.文件的打开关闭 XML\YAML文件在OpenCV中的数据结构为FileStorage,打开操作例如: string filename = "I.xml"; FileStora ...
- python yaml文件读写
import yaml yaml_dict={"} with open("a.yaml", "w") as f: yaml.safe_dump(yam ...
- OpenCV教程(42) xml/yaml文件的读写
参考资料: http://docs.opencv.org/modules/core/doc/xml_yaml_persistence.html #include "opencv2/openc ...
- wp8.1 Study11:APP里文件读写和使用XML和Json序列化
一.文件读写 1.基本操作(使用FileIO API) 这个方法在上一个stduy已经学过,那么贴出来复习下,代码如下: private async void writeTextToLocalStor ...
- OpenCV 读取.xml文件
OpenCV 只提供了读取和存储.xml和.yml 文件格式的函数. 读取.xml文件的C++例程如下: cv::FileStorage fs; //OpenCV 读XML文件流 cv::Mat De ...
随机推荐
- CSS3之border-image的使用
最近,我在项目开发中遇到这样的问题. 要给这个tab的底部的蓝线左右加上圆角. 然而,这个元素实际如上图所示,只是active的时候加了个underline的类,蓝线并没有单独的html. 若给这个s ...
- ES6 class(基本语法+方法)
静态属性与静态方法 1. 不会被类实例所拥有的属性与方法 只是类自身拥有2. 只能通过类调用 静态方法与普通方法重名,不会冲突static 关键字(静态方法) 静态属性类名.属性名 = 属性值; 1. ...
- 【32】Padding(填充)原理讲解
Padding 为了构建深度神经网络,你需要学会使用的一个基本的卷积操作就是padding,让我们来看看它是如何工作的. 我们在之前笔记中看到,如果你用一个3×3的过滤器卷积一个6×6的图像,你最 ...
- 关于Comparable和Comparator那些事
在实际项目开发过程中,我们经常需要对某个对象或者某个集合中的元素进行排序,常用的两种方式是实现某个接口.常见的可以实现比较功能的接口有Comparable接口和 Comparator接口,那么这两个又 ...
- 提取 Microsoft.ReportViewer等dll
ReportViewer 在开发环境没问题 发布以后可能会提示找不到 Microsoft.ReportViewer 下的几个dll 可以用用下面脚本在开发服务器上提取 相应的dll @SET dest ...
- ASP.NET常用内置对象(三)Server
Server对象是HttpServerUtility的一个实例,也是上下文对象HttpContext的一个属性,提供用于处理Web请求的Helper方法. Server.MapPath("& ...
- C语言实现链式二叉树静态创建,(先序遍历),(中序遍历),(后续遍历)
#include <stdio.h>#include <stdlib.h> struct BTNode{ char data ; struct BTNode * pLchild ...
- socket编程执行远程命令实现_python
一.单客户端连接的例子: 服务端: import socket,os,subprocess server=socket.socket() server.bind(('localhost',1234)) ...
- oracle 处理Session不够用
1.执行语句 scope=spfile; scope=spfile; 2.查看现在的链接数 select count(*) from v$process --当前正在使用的 select value ...
- 在vue中使用elementUI饿了么框架使用el-tabs,切换Tab如何实现实时加载,以及el-table表格使用总结
当我们在开发中遇到tab切换,这时候用el的el-tabs感觉很方便 但当我在把代码都写完后,发现一个问题就是页面打开时 虽然我们只能看见当前一个tab页,但是vue会帮你把你写的所有tab页的内容都 ...