gpt4 book ai didi

c++ - 使用cpp在opencv中的xml文件中追加元素

转载 作者:太空宇宙 更新时间:2023-11-03 22:53:39 27 4
gpt4 key购买 nike

我正在尝试在我的 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();

提前致谢!

最佳答案

请尝试此代码段。它似乎按预期工作。

#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你不应该将保存/加载与写入/读取混在一起。

关于c++ - 使用cpp在opencv中的xml文件中追加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34828637/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com