Trying to parse OpenCV YAML ouput with yaml-cpp

Posted by Kenn Sebesta on Stack Overflow See other posts from Stack Overflow or by Kenn Sebesta
Published on 2010-04-20T12:36:35Z Indexed on 2010/05/15 19:54 UTC
Read the original article Hit count: 530

Filed under:

I've got a series of OpenCv generated YAML files and would like to parse them with yaml-cpp

I'm doing okay on simple stuff, but the matrix representation is proving difficult.

# Center of table
tableCenter: !!opencv-matrix
   rows: 1
   cols: 2
   dt: f
   data: [ 240,    240]

This should map into the vector

240
240

with type float. My code looks like:

#include "yaml.h"
#include <fstream>
#include <string>

struct Matrix {
    int x;
};

void operator >> (const YAML::Node& node, Matrix& matrix) {
   unsigned rows;
   node["rows"] >> rows;
}

int main()
{
   std::ifstream fin("monsters.yaml");
   YAML::Parser parser(fin);
   YAML::Node doc;

    Matrix m;
    doc["tableCenter"] >> m;

   return 0;
}

But I get

terminate called after throwing an instance of 'YAML::BadDereference'
  what():  yaml-cpp: error at line 0, column 0: bad dereference
Abort trap

I searched around for some documentation for yaml-cpp, but there doesn't seem to be any, aside from a short introductory example on parsing and emitting. Unfortunately, neither of these two help in this particular circumstance.

As I understand, the !! indicate that this is a user-defined type, but I don't see with yaml-cpp how to parse that.

© Stack Overflow or respective owner

Related posts about yaml-cpp