XML/YAML 永続性

FileStorage

FileStorage

XML/YAML ファイルストレージクラス.

class FileStorage
{
public:
    enum { READ=0, WRITE=1, APPEND=2 };
    enum { UNDEFINED=0, VALUE_EXPECTED=1, NAME_EXPECTED=2, INSIDE_MAP=4 };
    // デフォルトコンストラクタ
    FileStorage();
    // 読み込み (flags=FileStorage::READ) または 書き込み
    // (flags=FileStorage::WRITE) 用にファイルをオープンするコンストラクタ
    FileStorage(const string& filename, int flags);
    // 既にオープンされた CvFileStorage* をラップします.
    FileStorage(CvFileStorage* fs);
    // デストラクタ.必要ならばファイルをクローズします.
    virtual ~FileStorage();

    // 指定されたファイルを,読み込み (flags=FileStorage::READ)
    // または書き込み (flags=FileStorage::WRITE) 用にオープンします.
    virtual bool open(const string& filename, int flags);
    // ストレージがオープンされているかをチェックします.
    virtual bool isOpened() const;
    // ファイルをクローズします.
    virtual void release();

    // 最初のトップレベルノードを返します.
    FileNode getFirstTopLevelNode() const;
    // ルートファイルノード
    // (最初のトップレベルノードの親)を返します.
    FileNode root(int streamidx=0) const;
    // 名前で指定されたトップレベルノードを返します.
    FileNode operator[](const string& nodename) const;
    FileNode operator[](const char* nodename) const;

    // 内部の CvFileStorage* を返します.
    CvFileStorage* operator *() { return fs; }
    const CvFileStorage* operator *() const { return fs; }

    // 指定のフォーマット( DataType を参照)で,
    // 特定数の要素を書き込みます.ヘッダは書き込みません.
    void writeRaw( const string& fmt, const uchar* vec, size_t len );

    // 古い形式のオブジェクト( CvMat, CvMatND など)を書き込みます.
    void writeObj( const string& name, const void* obj );

    // ファイル名が与えられると,そのデフォルトオブジェクト名を返します.
    // ( cvSave() でデフォルトオブジェクト名を得る場合などに利用されます)
    static string getDefaultObjectName(const string& filename);

    Ptr<CvFileStorage> fs;
    string elname;
    vector<char> structs;
    int state;
};

FileNode

FileNode

XML/YAML ファイルノードクラス.

class CV_EXPORTS FileNode
{
public:
    enum { NONE=0, INT=1, REAL=2, FLOAT=REAL, STR=3,
        STRING=STR, REF=4, SEQ=5, MAP=6, TYPE_MASK=7,
        FLOW=8, USER=16, EMPTY=32, NAMED=64 };
    FileNode();
    FileNode(const CvFileStorage* fs, const CvFileNode* node);
    FileNode(const FileNode& node);
    FileNode operator[](const string& nodename) const;
    FileNode operator[](const char* nodename) const;
    FileNode operator[](int i) const;
    int type() const;
    int rawDataSize(const string& fmt) const;
    bool empty() const;
    bool isNone() const;
    bool isSeq() const;
    bool isMap() const;
    bool isInt() const;
    bool isReal() const;
    bool isString() const;
    bool isNamed() const;
    string name() const;
    size_t size() const;
    operator int() const;
    operator float() const;
    operator double() const;
    operator string() const;

    FileNodeIterator begin() const;
    FileNodeIterator end() const;

    void readRaw( const string& fmt, uchar* vec, size_t len ) const;
    void* readObj() const;

    // 効率が低下するのでラッパーポインタクラスを利用しないでください.
    const CvFileStorage* fs;
    const CvFileNode* node;
};

FileNodeIterator

FileNodeIterator

XML/YAML ファイルノードイテレータクラス.

class CV_EXPORTS FileNodeIterator
{
public:
    FileNodeIterator();
    FileNodeIterator(const CvFileStorage* fs,
        const CvFileNode* node, size_t ofs=0);
    FileNodeIterator(const FileNodeIterator& it);
    FileNode operator *() const;
    FileNode operator ->() const;

    FileNodeIterator& operator ++();
    FileNodeIterator operator ++(int);
    FileNodeIterator& operator --();
    FileNodeIterator operator --(int);
    FileNodeIterator& operator += (int);
    FileNodeIterator& operator -= (int);

    FileNodeIterator& readRaw( const string& fmt, uchar* vec,
                               size_t maxCount=(size_t)INT_MAX );

    const CvFileStorage* fs;
    const CvFileNode* container;
    CvSeqReader reader;
    size_t remaining;
};

目次

前のトピックへ

描画関数

次のトピックへ

クラスタリングと多次元空間探索

このページ