openCV读取XML文件基本操作

与保存XML文件操作类似,也有cvReadInt之类的函数,和保存struct相对应,读取的时候可以先选择节点(保存时的struct名称),再选择数据;如果保存数据时是没有名称,譬如CV_NODE_SEQ模式,直接选择cvReadInt(),如果有名称,譬如CV_NODE_MAP模式,选择cvReadIntByName()进行读取。

<?xml version="1.0"?>
<opencv_storage>
<int>100</int>
<bool_true>1</bool_true>
<bool_false>0</bool_false>
<float>9.9870002746582031e+001</float>
<string>"this is a string"</string>
<slParams>
  <slParams_projWidth>1140</slParams_projWidth>
  <slParams_projHeight>912</slParams_projHeight>
  <slParams_camWidth>1024</slParams_camWidth>
  <slParams_camHeight>1280</slParams_camHeight>
  <slParams_colEncode>1</slParams_colEncode>
  <slParams_rowEncode>0</slParams_rowEncode></slParams>
<point>
  2 3</point>
</opencv_storage>

例如要读取以上的xml文件中的数据,使用cvReadInt()系类的函数,其中第一个参数是打开文件的名称,第二个是所要读取的数据的节点名称,对于直接存放在xml下的数据,节点为NULL,保存在xml时存放在sruct中的数据,节点就是struct的名称,如果是CV_NODE_MAP模式或者XML下的数据,用cvReadIntByName(),存储节点的类型为CvFileNode,取节点名称的函数为cvGetFileNodeByName()。

        params slParams;
	int ai = 0;
	bool T;
	bool F;
	float af;
	std::string astr;
	CvPoint p;

	const std::string fileName = "C://structuredLight/test.xml";
	//CvFileStorage* fs=cvOpenFileStorage(fileName.c_str(),0,CV_STORAGE_WRITE);
	CvFileStorage* fs=cvOpenFileStorage(fileName.c_str(),0,CV_STORAGE_READ);

	ai = cvReadIntByName(fs,NULL,"int",0);
	std::cout<<"ai="<<ai<<std::endl;
	T = cvReadIntByName(fs,NULL,"bool_true");
	std::cout<<"T="<<T<<std::endl;
	F = cvReadIntByName(fs,NULL,"bool_false");
	std::cout<<"F="<<F<<std::endl;
	af = cvReadRealByName(fs,NULL,"float");
	std::cout<<"af="<<af<<std::endl;
	astr = cvReadStringByName(fs,NULL,"string",0);
	std::cout<<"astr="<<astr<<std::endl;

	CvFileNode* fs1 = cvGetFileNodeByName(fs,NULL,"slParams");
	slParams.camWidth = cvReadIntByName(fs,fs1,"slParams_camWidth");
	std::cout<<"camWidth="<<slParams.camWidth<<std::endl;

	cvReleaseFileStorage(&fs);

工作上暂时只用到这些操作,还有一些未解决的问题,譬如如何读取序列结构的数据成员。

时间: 2024-10-11 05:39:31

openCV读取XML文件基本操作的相关文章

OpenCV 读取.xml文件

OpenCV 只提供了读取和存储.xml和.yml 文件格式的函数. 读取.xml文件的C++例程如下: 1 cv::FileStorage fs; //OpenCV 读XML文件流 2 cv::Mat DepthData; //深度数据矩阵 3 std::string filename = "C:\\Users\\xzd\\Documents\\KinectFile\\2014-08-28\\16-32-30\\Depth0001.xml"; 4 // 待读取.XML文件名 5 6

C#读取XML文件的基类实现

刚到新单位,学习他们的源代码,代码里读写系统配置文件的XML代码比较老套,直接写在一个系统配置类里,没有进行类的拆分,造成类很庞大,同时,操作XML的读写操作都是使用SetAttribute和node.Attribute(name)方法,因此,想到结合之前所做的XML操作,完成了一个能够读取XML文件的基类,便于以后的使用. PS:即使再老套的代码,目前也不敢进行优化,一是水平不行,二是不敢. 使用静态扩展类,扩展了几个经常使用的类型,能够方便数据的读写. 操作XML的类,可以直接继承BaseL

Excel开发学习笔记:读取xml文件及csv文件

读取xml文件 有好多种读取xml的方式,xmlDOM比较常见,我使用了另外一种,它以数据流的方式打开文件并读取内容 Imports System.Xml  Dim group As New List(Of String)  Using reader As XmlReader = XmlReader.Create(OpenFileDialog2.FileName)      While reader.ReadToFollowing("group")          reader.Mo

读取XML文件的指定节点的值 并转换为Item

cmb_State_Send.ItemsSource = null; XmlDocument doc = new XmlDocument(); doc.Load("D:\\模板\\WorkstationState_Config.xml"); //加载Xml文件 XmlElement rootElem = doc.DocumentElement; //获取根节点 XmlNode xn = rootElem.SelectSingleNode("//Workstation[@Nam

Java使用相对路径读取xml文件

java使用相对路径读取xml文件 博客分类: java javaXMLJavaWeb 一.xml文件一般的存放位置有三个: 1.放在WEB-INF下: 2.xml文件放在/WEB-INF/classes目录下或classpath的jar包中: 3.放在与解析它的java类同一个包中,不一定是classpath: 二.相对应的两种使用相对路径的读取方法: 方法一:(未验证) 将xml文件放在WEB-INF目录下,然后 程序代码: InputStream is=getServletContext(

C#中常用的几种读取XML文件的方法

XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web.config文件,还有许多重要的场所都有它的身影.Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具.XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用.微软也提供了一系列类库来倒帮助我们在应用程序中存储XML文件. “在程序中访问

C# 读取xml文件忽略xml文件的注释

默认情况下,读取xml文件是不忽略注释的,这样读取带注释的节点会造成异常,那么怎么屏蔽掉这些注释呢? 方案如下: XmlDocument doc = new XmlDocument(); XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreComments = true; //xmlFilePath:xml文件路径 XmlReader reader = XmlReader.Create(xmlFilePath,

DataSet - DataTable - DataRow 读取 xml 文件 + 搜索

DataSet ds = XmlHelper.GetDataSetByXml(AppDomain.CurrentDomain.BaseDirectory + "/Config/ConfigName.xml");//取得xml文件 DataTable dt = ds.Tables["table_Name"];//取得xml文件的节点内容 DataRow[] dr = dr = ds.Tables["table_Name"].Select("

利用XPath读取Xml文件

之所以要引入XPath的概念,目的就是为了在匹配XML文档结构树时能够准确地找到某一个节点元素.可以把XPath比作文件管理路径:通过文件管理路 径,可以按照一定的规则查找到所需要的文件:同样,依据XPath所制定的规则,也可以很方便地找到XML结构文档树中的任何一个节点. 不过,由于XPath可应用于不止一个的标准,因此W3C将其独立出来作为XSLT的配套标准颁布,它是XSLT以及我们后面要讲到的XPointer的重要组成部分. 在介绍XPath的匹配规则之前,我们先来看一些有关XPath的基