前端之家收集整理的这篇文章主要介绍了
OpenCv的xml读写(opencv教程大全),
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
opencv教程专栏:http://blog.csdn.net/Augusdi/article/category/747412
- int@H_301_7@sub_test_opencv_xml_write(@H_301_7@void@H_301_7@)@H_301_7@@H_301_7@
- {@H_301_7@
-
- CvFileStorage*fs=cvOpenFileStorage("test.xml"@H_301_7@,CV_STORAGE_WRITE);@H_301_7@@H_301_7@
- //写注释@H_301_7@@H_301_7@@H_301_7@
- cvWriteComment(fs,"测试写XML文件"@H_301_7@,1);@H_301_7@@H_301_7@
- @H_301_7@
-
- cvStartWriteStruct(fs,"Employee"@H_301_7@,CV_NODE_MAP);@H_301_7@@H_301_7@
- //注释@H_301_7@@H_301_7@@H_301_7@
- cvWriteComment(fs,"MAP类型,姓名,年龄,薪水"@H_301_7@,1);@H_301_7@@H_301_7@
- //姓名@H_301_7@@H_301_7@@H_301_7@
- cvWriteString(fs,"name"@H_301_7@,@H_301_7@"刘越"@H_301_7@);@H_301_7@@H_301_7@
- //年龄@H_301_7@@H_301_7@@H_301_7@
- cvWriteInt(fs,"age"@H_301_7@,18);@H_301_7@@H_301_7@
- //薪水@H_301_7@@H_301_7@@H_301_7@
- cvWriteReal(fs,"salary"@H_301_7@,2780.3);@H_301_7@@H_301_7@
- //销售次数@H_301_7@@H_301_7@@H_301_7@
- "sales_count"@H_301_7@,4);@H_301_7@@H_301_7@
- //销售具体数据@H_301_7@@H_301_7@@H_301_7@
- int@H_301_7@sales_record[]={30000,4200,50090};@H_301_7@@H_301_7@
- //注释@H_301_7@@H_301_7@@H_301_7@
- "SEQ类型,销售记录"@H_301_7@,0); background-color:inherit">//开始写结构,类型是序列sequence,无名字的有序节点集合@H_301_7@@H_301_7@@H_301_7@
- cvStartWriteStruct(fs,"sales_record"@H_301_7@,CV_NODE_SEQ);@H_301_7@@H_301_7@
- //前3条销售记录@H_301_7@@H_301_7@@H_301_7@
- cvWriteRawData(fs,sales_record,3,"i"@H_301_7@);@H_301_7@@H_301_7@
- //第4条销售记录,注意无名字@H_301_7@@H_301_7@@H_301_7@
- cvWriteInt(fs,6100);@H_301_7@
- //结束@H_301_7@@H_301_7@@H_301_7@
- cvEndWriteStruct(fs);@H_301_7@
- }@H_301_7@
- "MAP类型,亲友"@H_301_7@,0); background-color:inherit">//开始@H_301_7@@H_301_7@@H_301_7@
- "Parent"@H_301_7@,CV_NODE_MAP);@H_301_7@@H_301_7@
- //父亲@H_301_7@@H_301_7@@H_301_7@
- cvWriteString(fs,"father"@H_301_7@,@H_301_7@"杨舜"@H_301_7@);@H_301_7@@H_301_7@
- //母亲@H_301_7@@H_301_7@@H_301_7@
- "mother"@H_301_7@,@H_301_7@"王娟"@H_301_7@);@H_301_7@@H_301_7@
- //结束@H_301_7@@H_301_7@@H_301_7@
- cvEndWriteStruct(fs);@H_301_7@
- //释放文件存储对象@H_301_7@@H_301_7@@H_301_7@
- cvReleaseFileStorage(&fs);@H_301_7@
- }@H_301_7@
- int@H_301_7@sub_test_opencv_xml_read(@H_301_7@void@H_301_7@)@H_301_7@@H_301_7@
- {@H_301_7@
- //文件节点@H_301_7@@H_301_7@@H_301_7@
- CvFileNode*node,*node2;@H_301_7@
- char@H_301_7@*str;@H_301_7@@H_301_7@
- int@H_301_7@count;@H_301_7@@H_301_7@
- int@H_301_7@*d;@H_301_7@@H_301_7@
- //cve_dm.debug_break();@H_301_7@@H_301_7@@H_301_7@
- //打开XML文件@H_301_7@@H_301_7@@H_301_7@
- 301_7@@H_301_7@
- //获得第一层数据节点@H_301_7@@H_301_7@@H_301_7@
- node=cvGetFileNodeByName(fs,"Employee"@H_301_7@);@H_301_7@@H_301_7@
- str=cvReadStringByName(fs,node,"name"@H_301_7@);@H_301_7@@H_301_7@
- printf("\n姓名=%s"@H_301_7@,str);@H_301_7@@H_301_7@
- printf("\n年龄=%d"@H_301_7@,cvReadIntByName(fs,@H_301_7@"age"@H_301_7@));@H_301_7@@H_301_7@
- printf("\n薪水=%g"@H_301_7@,cvReadRealByName(fs,@H_301_7@"salary"@H_301_7@));@H_301_7@@H_301_7@
- count=cvReadIntByName(fs,"sales_count"@H_301_7@);@H_301_7@@H_301_7@
- printf("\n销售%d条"@H_301_7@,count);@H_301_7@@H_301_7@
- d=cvAlloc(sizeof@H_301_7@(@H_301_7@int@H_301_7@)*count);@H_301_7@@H_301_7@
- if@H_301_7@(d)@H_301_7@@H_301_7@
- int@H_301_7@i;@H_301_7@@H_301_7@
- node2=cvGetFileNodeByName(fs,"sales_record"@H_301_7@);@H_301_7@@H_301_7@
- if@H_301_7@(node2)@H_301_7@@H_301_7@
- cvReadRawData(fs,node2,d,108); list-style:decimal-leading-zero outside; color:inherit; line-height:20px; margin:0px!important; padding:0px 3px 0px 10px!important"> printf("\n销售记录="@H_301_7@);@H_301_7@@H_301_7@
- for@H_301_7@(i=0;i<count;i++)@H_301_7@@H_301_7@
- printf("%d,"@H_301_7@,d[i]);@H_301_7@@H_301_7@
- cvFree(&d);@H_301_7@
- //获得第二层节点@H_301_7@@H_301_7@@H_301_7@
- "Parent"@H_301_7@);@H_301_7@@H_301_7@
- printf("\n根节点=%s"@H_301_7@,cvGetFileNodeName(node));@H_301_7@@H_301_7@
- str=cvReadStringByName(fs,"father"@H_301_7@);@H_301_7@@H_301_7@
- printf("\n父亲=%s"@H_301_7@,str);@H_301_7@@H_301_7@
- "mother"@H_301_7@);@H_301_7@@H_301_7@
- printf("\n母亲=%s"@H_301_7@,248)"> }@H_301_7@
1.写XMl文件,
voidCrecognitionDlg::storeDirectoryFaces(){@H_301_7@@H_301_7@
- CvFileStorage*fileStorage;@H_301_7@
- fileStorage@H_301_7@=@H_301_7@cvOpenFileStorage@H_301_7@("directoryInfo.xml",CV_STORAGE_WRITE);@H_301_7@@H_301_7@
- cvWriteInt(fileStorage,"nFaces",indexFaces.size());@H_301_7@
- cvStartWriteStruct(fileStorage,"CVFaceRecog",CV_NODE_MAP);@H_301_7@
- for(size_ti@H_301_7@=@H_301_7@0@H_301_7@;i@H_301_7@<@H_301_7@indexFaces.size@H_301_7@();i++)@H_301_7@@H_301_7@
- charperson[100];@H_301_7@
- sprintf(person,"person_%d",(i+1));//必须区分开,否则读的时候会出问题@H_301_7@
- cvStartWriteStruct(fileStorage,person,CV_NODE_MAP);@H_301_7@
- cvWriteInt(fileStorage,"index",indexFaces.at(i));@H_301_7@
- cvWriteString(fileStorage,"name",namePerson.at(i));@H_301_7@
- cvWriteString(fileStorage,"directory",pathFaces.at(i));@H_301_7@
- cvEndWriteStruct(fileStorage);@H_301_7@
- cvReleaseFileStorage(&fileStorage);@H_301_7@
- }@H_301_7@
写完的内容如下: