如何在opencv中访问yml文件的元素?

时间:2013-03-28 08:22:58

标签: c++ c opencv matrix yaml

我有一个yml文件,如下所示:

%YAML:1.0

X: !!opencv-matrix
    rows: 13
    cols: 40
    dt: f
    data: [ 166.000000, 162.666667, 159.333333, 
        156.000000, 152.666667, 149.333333, 146.000000, 
        142.333333, 138.666667, 135.000000, 131.333333,.... etc

如何将此文件转换为矩阵形式并访问其元素。我必须对这个矩阵做一些数学运算。我编写了以下代码来阅读此文件。如果我想说从第二列减去第一列,我该怎么办?请帮忙。

代码:

#include "stdafx.h"
#include "cv.h"
#include "highgui.h"

using namespace cv;
using namespace std;

int main (int argc, char * const argv[])
{   
Mat X;
string XFile  = "newStorageFile.yml";
FileStorage fsDemoX(XFile , FileStorage::READ);
fsDemoX["X"] >> X;

cout << "Print the contents of X:" << endl;
cout << X << endl << endl;

fsDemoX.release();

return 0;
}

1 个答案:

答案 0 :(得分:0)

这是以yml格式存储的OpenCV矩阵。 您拥有在文档的persistency page中加载矩阵所需的所有文档。

然后,您可以将{矩阵}处理为array of coefficientsmatrix(代数含义)。

作为旁注,您不需要调用fsDemoX.release()方法,当到达范围的末尾时,将自动调用析构函数。