1

私は基本的に、OpenCV FileNode のいくつかのフィールドを読み取り、いくつかの計算を行ってから、元の OpenCV FileNode のフィールドの1 つだけを計算されたデータに置き換えています。

これを可能にする方法が見つかりません。誰もこれを以前にやったことがありますか?

ご協力いただきありがとうございます!

4

3 に答える 3

1

いくつか検索した結果、既存のファイルノードまたはファイルストレージオブジェクトに追加または追加できないようです。

ただし、できることは、新しい FileStorage オブジェクトを作成し、保持したい既存の FileNode をコピーし、不要な古いフィールドを破棄してから、この新しい FileStorage オブジェクトを更新されたデータで保存することです。

最新の C++ インターフェイスを使用して 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);

私のように困っている人の参考になれば幸いです。

ベスト、ポール

于 2013-08-21T17:44:29.403 に答える