3

openCVを使用して、xmlファイル内からマトリックスを読み取って表示しようとしています。XMLファイルは次のようになります。

  <?xml version="1.0"?>
    <opencv_storage>
    <frame_00000>
      <pose type_id="opencv-matrix">
        <rows>0</rows>
        <cols>0</cols>
        <dt>u</dt>
        <data></data></pose>
      <expertCode>3</expertCode>
      <autoCode>-1</autoCode></frame_00000>
    <frame_00001>
      <pose type_id="opencv-matrix">
        <rows>0</rows>
        <cols>0</cols>
        <dt>u</dt>
        <data></data></pose>
      <expertCode>0</expertCode>
      <autoCode>-1</autoCode></frame_00001>
    <frame_00002>
      <pose type_id="opencv-matrix">
        <rows>6</rows>
        <cols>1</cols>
        <dt>d</dt>
        <data>
          9.6603986167822176e-02 2.7534827334102827e-02
          -7.9839974858475181e-03 2.9772357539313782e+02
          2.6446663460538508e+02 1.5645098067258549e+00</data></pose>
      <expertCode>0</expertCode>
      <autoCode>0</autoCode></frame_00002>
etc...

ファイルを開くことができましたが、コンパイルして実行すると、フレームデータを印刷できません。これは私が持っているコードです:

#include "opencv2/opencv.hpp"
#include <fstream>

using namespace cv;
using namespace std;

int main()
{
    std::cout<< endl << "Reading:" << endl;
    FileStorage fs;
    fs.open("output.xml", FileStorage::READ);

    if (fs.isOpened()) 
    {
        cout<<"File is opened\n";
    }


    Mat pose2;
    fs["pose"] >> pose2;
    std::cout<< pose2;

    fs.release();
    return (0);
}

問題は、fs.release()の前のコードの最後のブロックにあります。何を試してもデータが表示されません。

xmlファイルのすべてのフレームデータを表示したい。私はOpenCVチュートリアルとリファレンスマニュアルをガイドとして使用してきましたが、それは役に立たないだけです。

それが私が使用すべきコマンドの基本的な概要であるとしても、どんなポインタでもありがたいです。

4

1 に答える 1

2
 FileNode n = fs.root();
    for (FileNodeIterator current = n.begin(); current != n.end(); current++) {
        FileNode item = *current;
        Mat v;
        item["pose"] >> v;
        cout << v << endl;
    } 

これはうまくいきます!:)

于 2012-12-13T22:54:03.587 に答える