【问题标题】:How do I access elements of a yml file in opencv?如何在 opencv 中访问 yml 文件的元素?
【发布时间】:2013-03-28 08:22:57
【问题描述】:

我有一个如下所示的 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;
}

【问题讨论】:

  • 这个问题与 YAML 有什么关系?当您不必从文件中读取矩阵时,您是否能够执行您的操作?或者读取文件时有什么错误?还是您只关心如何对矩阵进行运算?
  • @sietschie:我有 yml 文件,我想要一种方法来访问和操作对这个 yml 数据的矩阵运算。我该怎么走得更远。读取文件时我没有任何错误。谢谢哈里

标签: c++ c opencv matrix yaml


【解决方案1】:

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

然后您可以将矩阵处理为array of coefficientsmatrix(在代数意义上)。

附带说明,您不需要调用fsDemoX.release() 方法,当到达作用域的末尾时会自动调用析构函数。

【讨论】:

  • 感谢您的回复。我是 Opencv 的初学者,所以你能详细说明“在文档的持久性页面中加载矩阵”是什么意思吗?谢谢哈里
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-24
  • 2012-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多