首页 > 代码库 > openCV读取XML文件基本操作
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);
工作上暂时只用到这些操作,还有一些未解决的问题,譬如如何读取序列结构的数据成员。
openCV读取XML文件基本操作
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。