最終更新: mikk_ni3_92 2010年02月09日(火) 17:35:56履歴
現在地 >> メニュー >> OpenCV >> sequence編00
INDEX:sequence編00 >> sequence編01
検出した特徴点や輪郭線などは、画像や使用するアルゴリズムによってその数が異なる。
そのような状況によって変動するデータ群を格納する動的なメモリ格納場所として、
OpenCVでは「メモリストレージ」というものを用意している。
その「メモリストレージ」の中に格納されていく
何らかのオブジェクト(データ)を「シーケンス」と呼んでいる。
シーケンスのデータ構造は次の通り
※cxtypes.hより引用
INDEX:sequence編00 >> sequence編01
検出した特徴点や輪郭線などは、画像や使用するアルゴリズムによってその数が異なる。
そのような状況によって変動するデータ群を格納する動的なメモリ格納場所として、
OpenCVでは「メモリストレージ」というものを用意している。
その「メモリストレージ」の中に格納されていく
何らかのオブジェクト(データ)を「シーケンス」と呼んでいる。
シーケンスのデータ構造は次の通り
※cxtypes.hより引用
#define CV_TREE_NODE_FIELDS(node_type) \ int flags; /* Miscellaneous flags. */ \ int header_size; /* Size of sequence header. */ \ struct node_type* h_prev; /* Previous sequence. */ \ struct node_type* h_next; /* Next sequence. */ \ struct node_type* v_prev; /* 2nd previous sequence. */ \ struct node_type* v_next /* 2nd next sequence. */ #define CV_SEQUENCE_FIELDS() \ CV_TREE_NODE_FIELDS(CvSeq); \ int total; /* Total number of elements. */ \ int elem_size; /* Size of sequence element in bytes. */ \ schar* block_max; /* Maximal bound of the last block. */ \ schar* ptr; /* Current write pointer. */ \ int delta_elems; /* Grow seq this many at a time. */ \ CvMemStorage* storage; /* Where the seq is stored. */ \ CvSeqBlock* free_blocks; /* Free blocks list. */ \ CvSeqBlock* first; /* Pointer to the first sequence block. */ typedef struct CvSeq { CV_SEQUENCE_FIELDS() } CvSeq;