Как редактировать/обновлять файл YAML в OpenCV?

Как лучше всего редактировать/обновлять файл YAML/YML в OpenCV?


person Rudi    schedule 08.07.2012    source источник
comment
Использовать библиотеку YAML? Я думаю, что yaml-cpp довольно хорош.   -  person Linuxios    schedule 09.07.2012
comment
То, как вы обрабатываете/читаете файл YAML, не связано с OpenCV, а с вашим языком программирования. Поскольку вы используете С++, я согласен с @Linuxios по поводу yaml-cpp.   -  person diip_thomas    schedule 10.07.2012
comment
@Linuxios и diip_thomas Преимущество OpenCV FileStorage заключается в том, что вы можете использовать один и тот же код для XML и YAML, поэтому я хотел бы придерживаться OpenCV, если это возможно!   -  person Rudi    schedule 21.07.2012


Ответы (2)


НЕТ ПРЯМОЙ поддержки обновления в YAML в целом, потому что необходимо перезаписать весь файл ниже узла обновления, поэтому причина в OpenCV, а также в yaml-cpp не поддерживает прямое редактирование значения узла. Таким образом, обходной путь заключается в повторном создании/записи структуры YAML.

person Rudi    schedule 22.07.2012

Похоже, что у OpenCV есть несколько собственных способов чтения и записи YAML. Из этого ответа SO я нашел следующую "шпаргалку" для интерфейса OpenCV C++:

https://code.ros.org/trac/opencv/export/3163/trunk/opencv/doc/opencv_cheatsheet.pdf

Часть их примера для написания YAML:

FileStorage fs("test.yml", FileStorage::WRITE);
fs << "i" << 5 << "r" << 3.1 << "str" << "ABCDEFGH";

Если вы заинтересованы в обновлении существующего файла YAML, кажется, что лучший способ — прочитать существующий файл в свой собственный тип данных, внести изменения, а затем записать новые данные в файл.

person Jesse Beder    schedule 10.07.2012
comment
Я ищу редактирование, т.е. обновление значения ключа, если оно уже существует, но FileStorage::WRITE просто добавляет что-то в конец файла :( - person Rudi; 21.07.2012