我基本上是在读取OpenCV FileNode中的几个字段,进行一些计算,然后仅将原始OpenCV FileNode中的一个字段替换为计算出的数据。

我找不到任何允许我执行此操作的方法。有人做过吗?

谢谢你的帮助!

最佳答案

经过一些搜索后,似乎无法追加或添加到现有的filenode或filestorage对象。

但是,您可以做的是创建一个新的FileStorage对象,复制可能要保留的任何现有FileNode,丢弃不需要的任何旧字段,然后使用更新的数据保存此新FileStorage对象。

我找不到使用最新的C++接口(interface)复制FileNode的方法,但是,我确实找到了使用旧的不赞成使用的结构来完成此操作的方法。以下内容将映射的FileNode复制到新的FileStorage对象。

cv::FileStorage fileStructure;
fileStructure.open("yourfile.xml", cv::FileStorage::WRITE);

CvFileStorage* fsPtr= fileStructure.operator *(); //gets the underlying pointer

cvWriteFileNode(fsPtr, "CopiedNode", fileNodeObject.operator *(),0);

我希望这可以帮助像我一样陷入困境的人们。

最好,
保罗

07-27 13:25