Добавить элемент в XML-файл в opencv с помощью cpp

Я пытаюсь добавить новый элемент в мой XML-файл opencv, который уже имеет один элемент, как показано ниже

<?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>

Я использую cv :: FileStorage из opencv.

Я хочу знать, что не так с :: 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();

Заранее спасибо!

1

Решение

Пожалуйста, попробуйте этот фрагмент. Кажется, работает как ожидалось.

#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;
}

Смотрите также Вот что вы не должны смешивать сохранить / загрузить с записью / чтением.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]