Я загрузил значения для матриц из файла XML, следуя примерам, представленным в репозитории OpenCvSharp.
Это, как я это сделал:
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 является строка с имя узла, в котором хранится ваш Мат, в файле.
Ее стоит отметить, что эта функция загружает объекты как 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 если вы просто хотите, чтобы добавить значения в файл, а не полностью перепиши его.
Для справки, это sample code file.