私は基本的に、OpenCV FileNode のいくつかのフィールドを読み取り、いくつかの計算を行ってから、元の OpenCV FileNode のフィールドの1 つだけを計算されたデータに置き換えています。
これを可能にする方法が見つかりません。誰もこれを以前にやったことがありますか?
ご協力いただきありがとうございます!
私は基本的に、OpenCV FileNode のいくつかのフィールドを読み取り、いくつかの計算を行ってから、元の OpenCV FileNode のフィールドの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);
私のように困っている人の参考になれば幸いです。
ベスト、ポール