<?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文件,我如何读取标记在不同段中的数据('status')。 我试图使用filestorge和filenode来做到这一点,但我没有找到任何示例来证明它。 如果我可以访问子节点,问题将得到解决。 有没有办法通过OPENCV访问xml中的一个节点的子节点? 请随意抛出任何想法或例子。欣赏它。
答案 0 :(得分:0)
我刚刚找到了一个有用的库。 cvFileStorage 与 FileStorage 不同。 显然,这个更有用。 附件是检索子节点数据的代码。有了这个,我们可以检索任何级别的节点。
//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 )
详情请查看链接: