opencv 读写XML YML
发布时间:2020-12-16 09:00:26 所属栏目:百科 来源:网络整理
导读://序列没有标签CvMemStorage *mem = cvCreateMemStorage(0);CvFileStorage *file = cvOpenFileStorage("e:123.yml",mem,CV_STORAGE_READ | CV_STORAGE_WRITE);cvStartWriteStruct(file,NULL,CV_NODE_SEQ );cvWriteInt(file,123);//写入的是序列,名称都为N
//序列没有标签 CvMemStorage *mem = cvCreateMemStorage(0); CvFileStorage *file = cvOpenFileStorage("e:123.yml",mem,CV_STORAGE_READ | CV_STORAGE_WRITE); cvStartWriteStruct(file,NULL,CV_NODE_SEQ ); cvWriteInt(file,123);//写入的是序列,名称都为NULL cvWriteReal(file,32.0); cvWriteString(file,"123123"); int dbData[5] = {12,3,5,8}; const string strType = "i"; cvWriteRawData(file,dbData,strType.c_str()); cvWriteComment(file,"my comment",0);//把注释写在该行的后面 CvFileNode *node = cvGetRootFileNode(file,0); if (node != NULL){ printf("%sn",node->data.str.ptr); } cvEndWriteStruct(file); cvReleaseFileStorage(&file); cvReleaseMemStorage(&mem); 可以看出序列写文件没有节点 CvMemStorage *mem = cvCreateMemStorage(0); CvFileStorage *file = cvOpenFileStorage("e:123.xml","UserInfo",CV_NODE_MAP ); cvWriteInt(file,"Integer","Real","String","123123"); cvWriteComment(file,0);//把注释写在该行的后面 cvEndWriteStruct(file); cvReleaseFileStorage(&file); cvReleaseMemStorage(&mem); 如果是MAP,就可以了 代码如下 CvMemStorage *mem1 = cvCreateMemStorage(0); CvFileStorage *file1 = cvOpenFileStorage("e:123.xml",mem1,CV_STORAGE_READ); CvStringHashNode *hashNode = cvGetHashedKey(file1,strlen("UserInfo")); CvFileNode *node1 = cvGetFileNode(file1,hashNode); if (node1 != NULL){//获取根节点名称 printf("%sn",cvGetFileNodeName(node1)); } hashNode = cvGetHashedKey(file1,strlen("Real")); CvFileNode *nodeReal = cvGetFileNode(file1,node1,hashNode); if (nodeReal != NULL){//获取子节点名称 printf("%sn",cvGetFileNodeName(nodeReal)); printf("%dn",cvReadInt(nodeReal)); } hashNode = cvGetHashedKey(file1,strlen("Integer")); CvFileNode *nodeInteger = cvGetFileNode(file1,hashNode); if (nodeInteger != NULL){//获取子节点名称 printf("%sn",cvGetFileNodeName(nodeInteger)); printf("%dn",cvReadInt(nodeInteger)); } hashNode = cvGetHashedKey(file1,strlen("String")); CvFileNode *nodeString = cvGetFileNode(file1,hashNode); if (nodeString != NULL){//获取子节点名称 printf("%sn",cvGetFileNodeName(nodeString)); printf("%sn",cvReadString(nodeString)); } printf("n"); printf("%fn",cvReadRealByName(file1,"Real"));//根据标签名获取值 printf("%sn",cvReadStringByName(file1,"String")); printf("%dn",cvReadIntByName(file1,"Integer")); cvReleaseFileStorage(&file1); cvReleaseMemStorage(&mem1); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |