OpenCV:xml文件的读取与写入( 二 )


           <<"src2"<<"["<<1<<2<<3<<"]" 
           <<"src3"<<"["<<1<<2<<3<<"]"<<"}"; 
    fswrite.release(); 
    cout<<"Write Finished"<<l; 
    getchar();
    return 0;
}

OpenCV:xml文件的读取与写入



5遍历xml文件节点:
在包含多个节点的xml文件中,
遍历的时辰,
起首先获取了文件的根节点-FileNode;
然后界说一个迭代器-FileNodeIterator,
从根节点的第一个节点起头遍历,直到最后一个节点竣事 。
成果阐发:
下面是stereo.xml的内容,
此中<?xml version="1.0"?>为文件信息,申明了xml的版本为1.0;<opencv_storage>...</opencv_storage>为根节点,
<src1 type_id="opencv-matrix">...</src1>为第一级节点(根节点的子节点),<rows>3</rows>为第二级节点,它是<src1 type_id="opencv-matrix">...</src1>的子节点 。

OpenCV:xml文件的读取与写入



OpenCV:xml文件的读取与写入



6xml中自界说布局存储:
OpenCV的xml可以实现int,float,double,string,mat等数据类型的存储和读取;可是往往我们会自界说类型的数据,那么若何实现自界说数据的存取?

如下:
①自界说数据布局:
②界说完数据布局后需要重载两个函数;
③对自界说的数据进行存储和读取;
 class faceInfo

public: 
    void write(FileStorage& fs) const 
    { 
        fs<<"{"<<"matrix"<<matrix<<"label"<<label<<"}"; 
    }
    void read(const FileNode& node) 
    { 
        node["matrix"]>>matrix; 
        node["label"]>>label; 
    } 
public: 
    Mat matrix; 
    string label; 
};

7void write(FileStorage& fs, const string&, const faceInfo& x) 

    x.write(fs);  
}
void read(const FileNode& node, faceInfo& x, const faceInfo& default_value = https://vvvtt.com/article/faceInfo())

    if(node.empty()) 
        x = default_value; 
    else 
        x.read(node); 

main
【OpenCV:xml文件的读取与写入】函数内本家儿法式如图所示:

OpenCV:xml文件的读取与写入



OpenCV:xml文件的读取与写入

猜你喜欢