0
<?xml version="1.0" encoding="UTF-8"?>
-<video>
<!--Total video No.: 10-->
    <Subject>abc</Subject>
    -<Video1>
        <Video_No>1</Video_No>
       -<segment1>         
           <Start_Frame>0</Start_Frame>
           <End_Frame>123</End_Frame>
           <Status>0</Status>
        </segment1>
        -<segment2>         
           <Start_Frame>1</Start_Frame>
           <End_Frame>12</End_Frame>
           <Status>1</Status>
        </segment2>

作为上面的 xml 文件,我如何读取标记在不同段中的数据(“状态”)。我试图使用文件存储和文件节点来做到这一点,但我没有找到任何演示它的示例。如果我可以访问子节点,问题将得到解决。有什么方法可以使用 OPENCV 访问 xml 中一个节点的子节点?请随时提出任何想法或示例。欣赏它。

4

1 回答 1

0

我刚刚找到了一个有用的库。 cvFileStorageFileStorage不同。显然,这个更有用。附上获取子节点数据的代码。有了这个,我们可以检索任何级别的节点。

//path is file name;
CvFileStorage*  fs = cvOpenFileStorage(path.c_str(), 0, CV_STORAGE_READ);
CvFileNode* fn = cvGetFileNodeByName(fs,0,"Video1");
CvFileNode*  fn1 = cvGetFileNode( fs, fn, cvGetHashedKey(fs, "segment1", -1,0 ), 0 );
int i = cvReadIntByName(fs,fn1,"Start_Frame"); 

看起来代码有点麻烦,如果您有更好的想法,请发表您的想法。

附上API

CvStringHashNode* cvGetHashedKey(CvFileStorage* fs, const char* name, int len=-1, int create_missing=0 )
CvFileNode* cvGetFileNode(CvFileStorage* fs, CvFileNode* map, const CvStringHashNode* key, int create_missing=0 )

详情请查看链接:

http://docs.opencv.org/modules/core/doc/old_xml_yaml_persistence.html?highlight=cvgetfilenodebyname#cvfilestorage

于 2013-09-28T00:52:27.630 回答