opencv - 如何删除 OpenCV FileStorage 对象中的文件节点

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

我找不到任何允许我这样做的方法。有没有人这样做过?

谢谢你的帮助!

最佳答案

经过一番搜索,我似乎无法附加或添加到现有的文件节点或文件存储对象。

但是,您可以做的是创建一个新的 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);

我希望这可以帮助像我一样被困住的人。

最好的,
保罗

https://stackoverflow.com/questions/18362488/

相关文章:

python - 使用OpenCV人脸检测时出错

opencv - 使用JavaCV开发我们需要安装什么?

opencv - 如何从gpuHog获取描述符?

opencv - 在Cygwin上安装Opencv

python - 将 h264 RTSP 流读入 p​​ython 和 opencv

opencv - OpenCV HoughLines是否使用本文:通过改进的Hough变换投票方案进

python - 用向量作为numpy中的条目迭代矩阵的最快方法

python - OpenCV 3.0缺少诸如drawMatches和drawMatchesKNN的

opencv - 检测图像中的标记以用于OpenCV中的透视变换

opencv - 如何找到两个二进制图像之间的旋转