openCV读取XML文件基本操作

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);

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

 

转载于:https://www.cnblogs.com/cyrus-ho/p/4086983.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值