OpenCvSharp リポジトリで提供されている例に従って、XML ファイルから行列の値を読み込みました。
これが私がやった方法です:
Mat matrix;
using (CvFileStorage fs = new CvFileStorage(xmlfile, null, FileStorageMode.Read))
{
CvFileNode param = fs.GetFileNodeByName(null, nodeName);
matrix = new Mat(fs.Read<CvMat>(param));
}
xmlfile は、持っている XML/YAML ファイルへのパス (この場合は "intrinsics.yml") であり、nodeName は、Mat がファイルに格納されているノードの名前を含む文字列です。
この関数は、Mat ではなく CvMat としてオブジェクトをロードすることに注意してください。
new Mat()
必要なものに変換します。より多くのデータを回復する必要がある場合は、ブラケットを使用してより多くの値を読み込むことができます。
完全を期すために、XML/YAML ファイルに値を書き込む方法を次に示します。
Mat matrix;
string nodeName = "sample_matrix";
using (CvFileStorage fs = new CvFileStorage(xmlfile, null, FileStorageMode.Write))
{
fs.Write(nodeName, matrix.ToCvMat());
fs.StartNextStream();
}
ファイルに値を追加するだけで、完全には書き換えない場合は、FileStorageMode.Write を FileStorageMode.Append に交換できます。
参考までにサンプルコードファイルです。