【问题标题】:Append element in xml file in opencv using cpp使用cpp在opencv中的xml文件中追加元素
【发布时间】:2016-04-22 02:00:57
【问题描述】:

我正在尝试在我的 opencv xml 文件中添加一个新元素,该文件已经具有如下元素

<?xml version="1.0"?>
<opencv_storage>
<acc type_id="opencv-ml-ann-mlp">
...
</_></weights></acc>
</opencv_storage>

我正在尝试添加一个名为 micr 的元素,如下所示

<?xml version="1.0"?>
<opencv_storage>
<acc type_id="opencv-ml-ann-mlp">
...
</_></weights></acc>
  <micr type_id="opencv-ml-ann-mlp">
...
</_></weights></micr>
</opencv_storage>

但我得到的是

<?xml version="1.0"?>
<opencv_storage>
<acc type_id="opencv-ml-ann-mlp">
...
  <micr type_id="opencv-ml-ann-mlp">
...
</_></weights></micr></_></weights></acc>
</opencv_storage>

我正在使用来自 opencv 的 cv::FileStorage。

我想知道 ::APPEND 有什么问题以及是否有其他方法可以实现这一点。

代码如下:

cv::FileStorage f("OCR.xml", cv::FileStorage::WRITE);
...
ann.write(*f, "acc");    //In another function
...
f.release();

cv::FileStorage f("OCR.xml", cv::FileStorage::APPEND);
...
ann.write(*f, "micr");    //In another function
...
f.release();

提前致谢!

【问题讨论】:

  • 请向我们展示您正在使用的代码,即minimal reproducible example,否则无法知道您做错了什么。
  • Hi Miki,我已经添加了代码,请检查。

标签: c++ xml opencv file-storage


【解决方案1】:

请试试这个 sn-p。它似乎按预期工作。

#include <opencv2/opencv.hpp>
#include <vector>
using namespace cv;

int main()
{
    Mat layers = (Mat1i(2,1) << 5, 15);
    CvANN_MLP ann(layers);

    {
        FileStorage f("OCR.xml", FileStorage::WRITE);
        ann.write(*f, "acc");
    }
    {
        FileStorage f("OCR.xml", FileStorage::APPEND);
        ann.write(*f, "micr");
    }

    FileStorage f("OCR.xml", FileStorage::READ);

    CvANN_MLP ann_acc;
    ann_acc.read(*f, cvGetFileNodeByName(*f, NULL, "acc"));

    CvANN_MLP ann_micr;
    ann_acc.read(*f, cvGetFileNodeByName(*f, NULL, "micr"));

    return 0;

    return 0;
}

另请参阅here,您不应该将保存/加载与写入/读取混为一谈。

【讨论】:

  • 这在我尝试时没有帮助这样做 anAcc.load("OCR.xml", "acc"); annMICR.load("OCR.xml", "micr");它给了我不好的参数错误,你可能知道。
  • 那个不好的参数错误是因为其他错误。它也适用于 .load(".xml", "") 。如果我按照您的建议继续使用 .load 而不是 .read 怎么办?会有什么影响?
猜你喜欢
  • 1970-01-01
  • 2020-10-28
  • 1970-01-01
  • 1970-01-01
  • 2014-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多