绪:
xml是Extensible Markup Language可扩展标识表记标帜说话的简写;
本文本家儿要介绍:
xml文件布局;
xml文件的读和写;
xml文件中-vector数据布局;
xml文件中-map数据布局;
遍历xml文件节点;
xml中自界说布局存储;

东西/原料
- OpenCV 2410
方式/步调
- 1
xml文件布局:
①xml文件的第一行为xml文件申明,一般申明了xml的版本和编码信息;
如:
<? xmlversion="1.0" encoding="UTF-8"?>
②xml文件的第二行为xml的肇端节点,也是根节点;
Opencv的xml文件默认的根节点为:
<opencv_storage>……</opencv_storage>
③每个xml文件有且只有一个根节点,其他节点都包含在这个根节点之内,每个节点又可以包含若干个子节点。
- 2
xml文件的读和写:
①xml文件的写数据,
起首用可写的体例打开一个test.xml文件,
然后写入一个Mat矩阵,
最后封闭。
②xml文件的读数据,
起首用可读体例打开一个test.xml文件,
然后读出“src1”节点里面的中心,
最后封闭。
③读和写打开xml文件也可以和下面那样:
FileStorage fswrite;
fswrite.open("stereo.xml",FileStorage::WRITE);
FileStorage fsread;
fsread.open("stereo.xml",FileStorage::READ);
【注】:FileStorage::WRITE每次城市新建一个文件,若是文件已经存在就会被笼盖失落,若是不想被笼盖,而是继续在已有的文件根本上添加内容,那么可以以FileStorage::APPEND的体例来打开!
- 3
xml文件中-vector数据布局:
vector数据,xml文件节点,不包含子节点;
在输入vector数据的起头和结从头至尾要别离输入“[”,“]”;
【注】:在输入vector数据前要先输入标签名称;
- 4
xml文件中-map数据布局
map数据,xml文件节点,包含子节点;
在输入map数据的起头和结从头至尾要别离写入“{”,“}”,
【注】:在输入 map数据前要先输入标签名称;
示例:
手动建立一个xml父节点(map),包含三个子节点(vector)。
#include <opencv2\opencv.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\features2d\features2d.hpp>
#include <opencv2\core\core.hpp>
using namespace std;
using namespace cv;
int main()
{
//========成立节点(写数据)=========
FileStorage fswrite;
fswrite.open("calib.xml",FileStorage::WRITE);
fswrite<<"src"<<"{"<<"src1"<<"["<<1<<2<<3<<"]"//子节点
<<"src2"<<"["<<1<<2<<3<<"]"
<<"src3"<<"["<<1<<2<<3<<"]"<<"}";
fswrite.release();
cout<<"Write Finished"<<endl;
getchar();
return 0;
}
- 5
遍历xml文件节点:
在包含多个节点的xml文件中,
遍历的时辰,
起首先获取了文件的根节点-FileNode;
然后界说一个迭代器-FileNodeIterator,
从根节点的第一个节点起头遍历,直到最后一个节点竣事。
成果阐发:
下面是stereo.xml的内容,
此中<?xml version="1.0"?>为文件信息,申明了xml的版本为1.0;<opencv_storage>...</opencv_storage>为根节点,
<src1 type_id="opencv-matrix">...</src1>为第一级节点(根节点的子节点),<rows>3</rows>为第二级节点,它是<src1 type_id="opencv-matrix">...</src1>的子节点。
- 6
xml中自界说布局存储:
OpenCV的xml可以实现int,float,double,string,mat等数据类型的存储和读取;可是往往我们会自界说类型的数据,那么若何实现自界说数据的存取?
步调如下:
①自界说数据布局:
②界说完数据布局后需要重载两个函数;
③对自界说的数据进行存储和读取;
class faceInfo
{
public:
void write(FileStorage& fs) const
{
fs<<"{"<<"matrix"<<matrix<<"label"<<label<<"}";
}
void read(const FileNode& node)
{
node["matrix"]>>matrix;
node["label"]>>label;
}
public:
Mat matrix;
string label;
};
- 7
void write(FileStorage& fs, const string&, const faceInfo& x)
{
x.write(fs);
}
void read(const FileNode& node, faceInfo& x, const faceInfo& default_value = faceInfo())
{
if(node.empty())
x = default_value;
else
x.read(node);
}
main()
函数内本家儿法式如图所示:
注重事项
- xml文件的第一行为xml文件申明,一般申明了xml的版本和编码信息;
- xml文件的第二行为xml的肇端节点,也是根节点;
- 每个xml文件有且只有一个根节点,其他节点都包含在这个根节点之内,每个节点又可以包含若干个子节点。
来源:百闻(微信/QQ号:9397569),转载请保留出处和链接!
本文链接:https://www.ibaiwen.com/web/239529.html
- 上一篇: Excel表格如何插入艺术字
- 下一篇: 如何在Word文档中插入艺术字
- 热门文章
-
WB蒙特利尔(WB Montreal)——欧美十大最差视频游戏开发商
迅猛龙(Velociraptor)——欧美史前十大死亡动物
什么是果酱猫(What Marmalade Cats)?
神奇蜘蛛侠2(The Amazing Spider-Man 2)——欧美最佳蜘蛛侠电影
希瑟(Heather)——欧美十大最佳柯南灰歌
二人梭哈
faceu激萌怎么把瘦脸开到最大
奥兹奥斯本(Ozzy Osbourne)——欧美十大高估歌手
什么是小脑前下动脉(Anterior Inferior Cerebellar Artery)?
我应该知道康涅狄格州的什么(What Should I Know About Connecticut)?
- 热评文章
- 最新评论
-
- 最近访客
-
- 站点信息
-
- 文章总数:200248
- 页面总数:9
- 分类总数:1
- 标签总数:0
- 评论总数:0
- 浏览总数:497