1、文件的打开关闭

XML\YAML文件在OpenCV中的数据结构为FileStorage,打开操作例如:

string filename = "I.xml";
FileStorage fs(filename, FileStorage::WRITE);
\\...
fs.open(filename, FileStorage::READ);

文件关闭操作会在FileStorage结构销毁时自动进行,但也可调用如下函数实现

fs.release();

2.文本和数字的输入和输出

写入文件使用  <<  运算符,例如:

fs << "iterationNr" << 100;

读取文件,使用 >> 运算符,例如

int itNr;
fs["iterationNr"] >> itNr;
itNr = (int) fs["iterationNr"];

3. OpenCV数据结构的输入和输出,和基本的C++形式相同

Mat R = Mat_<uchar >::eye (3, 3),
T = Mat_<double>::zeros(3, 1);
fs << "R" << R; // Write cv::Mat
fs << "T" << T;
fs["R"] >> R; // Read cv::Mat
fs["T"] >> T;

4. vector(arrays) 和 maps的输入和输出

vector要注意在第一个元素前加上“[”,在最后一个元素前加上"]"。例如:

fs << "strings" << "["; // text - string sequence
fs << "image1.jpg" << "Awesomeness" << "baboon.jpg";
fs << "]"; // close sequence

对于map结构的操作使用的符号是"{"和"}",例如

fs << "Mapping"; // text - mapping
fs << "{" << "One" << 1;
fs << "Two" << 2 << "}";

读取这些结构的时候,会用到FileNode和FileNodeIterator数据结构。对FileStorage类的[]操作符会返回FileNode数据类型,对于一连串的node,可以使用FileNodeIterator结构,例如:

5、文件读取

FileNode n = fs["strings"]; // Read string sequence – Get node
if (n.type() != FileNode::SEQ)
{
cerr << "strings is not a sequence! FAIL" << endl;
return 1;
}
FileNodeIterator it = n.begin(), it_end = n.end(); // Go through the node
for (; it != it_end; ++it)
cout << (string)*it << endl;
 

6、例子介绍

 
if (filename.empty())
{
return 0;
}
cv::FileStorage fs(filename,cv::FileStorage::WRITE);
if(!fs.isOpened())
{
return 0;
}
fs<<"preFilterCap"<<stBM.state->preFilterCap;
fs<<"SADWindowSize"<<stBM.state->SADWindowSize;
fs<<"minDisparity"<<stBM.state->minDisparity;
fs<<"numberOfDisparities"<<stBM.state->numberOfDisparities;
fs<<"textureThreshold"<<stBM.state->textureThreshold;
fs<<"uniquenessRatio"<<stBM.state->uniquenessRatio;
fs<<"speckleWindowSize"<<stBM.state->speckleWindowSize;
fs<<"speckleRange"<<stBM.state->speckleRange;
fs<<"leftValidArea" ;
fs<<"{"<<"roi1x"<<stBM.state->roi1.x;
fs<<"roi1y"<<stBM.state->roi1.y;
fs<<"roi1width"<<stBM.state->roi1.width;
fs<<"roi1height"<<stBM.state->roi1.height;
fs<<"}" ;
fs<<"rightValidArea" ;
fs<<"{"<<"roi2x"<<stBM.state->roi2.x;
fs<<"roi2y"<<stBM.state->roi2.y;
fs<<"roi2width"<<stBM.state->roi2.width;
fs<<"roi2height"<<stBM.state->roi2.height;
fs<<"}" ;
fs.release();
 
 

7、实验结果

对XML和YAML文件实现I/O操作的更多相关文章

  1. OPENCV(3) —— 对XML和YAML文件实现I/O 操作

    XML\YAML文件在OpenCV中的数据结构为FileStorage string filename = "I.xml"; FileStorage fs(filename, Fi ...

  2. opencv 3 core组件进阶(3 离散傅里叶变换;输入输出XML和YAML文件)

    离散傅里叶变换 #include "opencv2/core/core.hpp" #include "opencv2/imgproc/imgproc.hpp" ...

  3. OpenCV之XML和YAML文件读写

    FileStorage类 该类有两个构造函数 FileStorage::FileStorage() FileStorage::FileStorage(const string& source, ...

  4. OpenCV——输入输出XML和YAML文件

  5. OpenCV 输入输出XML和YAML文件

    #include <opencv2/core/core.hpp> #include <iostream> #include <string> using names ...

  6. OpenCV教程(42) xml/yaml文件的读写

    参考资料: http://docs.opencv.org/modules/core/doc/xml_yaml_persistence.html #include "opencv2/openc ...

  7. Python 第五篇(下):系统标准模块(shutil、logging、shelve、configparser、subprocess、xml、yaml、自定义模块)

    目录: shutil logging模块 shelve configparser subprocess xml处理 yaml处理 自定义模块 一,系统标准模块: 1.shutil:是一种高层次的文件操 ...

  8. 持续集成时 travis 和 codecov 等 yaml 文件的配置

    最近在项目中在配置CodeCov 以及Travis 和 AppVeyor做持续集成时,遇到了一些问题,也解决了一些问题.顺便拿来分享一下. 首先时Travis,这个主要是来跑基于 Linux 环境下的 ...

  9. Docker Kubernetes YAML文件常用指令

    YAML文件常用指令 配置文件说明: 定义配置时,指定最新稳定版API(当前为v1). 配置文件应该存储在集群之外的版本控制仓库中.如果需要,可以快速回滚配置.重新创建和恢复. 应该使用YAML格式编 ...

随机推荐

  1. matlab高斯模板生成,K是归一化系数,上面是一个半径200的高斯模板用来做MSR

    R3=; F=zeros(*R3+,*R3+); sigma=R3/; r=; :*R3+     :*R3+         r=(x-R3)*(x-R3)+(y-R3)*(y-R3);       ...

  2. chmod,chown和chgrp的区别

    1.chgrp(转变文件所属用户组)change group chgrp 用户组 文件名 ###便是这个格了.若是整个目次下的都改,则加-R参数用于递归. 如:chgrp -R user smb.co ...

  3. python join字符连接函数的使用方法

    就是把一个list中所有的串按照你定义的分隔符连接起来,比如: >>> import string >>> >>> >>> li ...

  4. Cassandra命令行CLI的基本使用

    启动cassandra-cli服务之后,可以进行CQL的使用. 1. 创建keyspace 可以理解成关系数据库的database [default@testkeyspace] create keys ...

  5. UIcollectionView的使用(首页的搭建3)

    2.4 数据统计cell 2.4.1 创建cell,继承自UICollectionViewcell 2.4.2导入详情头文件并且创建详情view 2.4.2.1创建详情view,继承自uiview,定 ...

  6. easyui源码翻译1.32--ComboBox(下拉列表框)

    前言 扩展自$.fn.combo.defaults.使用$.fn.combobox.defaults重写默认值对象.下载该插件翻译源码 下拉列表框显示一个可编辑文本框和下拉式列表,用户可以选择一个值或 ...

  7. LINUX下安装PHP(CGI模式)和NGINX[转]

    安装所需依赖 yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freety ...

  8. SPRING IN ACTION 第4版笔记-第四章ASPECT-ORIENTED SPRING-009-带参数的ADVICE2 配置文件为XML

    一. 1.配置文件为xml时则切面类不用写aop的anotation package com.springinaction.springidol; public class Magician impl ...

  9. iOS上获得MAC地址

    很多时候我们都需要唯一来确定一台设备,苹果设备本来有个UDID号,可以实现这个目的.在iOS5.0以前,还有一个uniqueIdentifier的API用来获得这个number.不过iOS5之后,这个 ...

  10. Android 常用UI控件之TabHost(2)简单示例

    1,布局 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tool ...