readseq.cpp
上传用户:banwdc
上传日期:2016-06-25
资源大小:2871k
文件大小:2k
源码类别:

OpenCV

开发平台:

Visual C++

  1. #include <stdio.h>
  2. #include "cxcore.h"
  3. int main( int argc, char** argv )
  4. {
  5.     CvFileStorage* fs = cvOpenFileStorage( "points.yml", 0, CV_STORAGE_READ );
  6.     CvStringHashNode* x_key = cvGetHashedNode( fs, "x", -1, 1 );
  7.     CvStringHashNode* y_key = cvGetHashedNode( fs, "y", -1, 1 );
  8.     CvFileNode* points = cvGetFileNodeByName( fs, 0, "points" );
  9.     if( CV_NODE_IS_SEQ(points->tag) )
  10.     {
  11.         CvSeq* seq = points->data.seq;
  12.         int i, total = seq->total;
  13.         CvSeqReader reader;
  14.         cvStartReadSeq( seq, &reader, 0 );
  15.         for( i = 0; i < total; i++ )
  16.         {
  17.             CvFileNode* pt = (CvFileNode*)reader.ptr;
  18. #if 1 /* 快变量 */
  19.             CvFileNode* xnode = cvGetFileNode( fs, pt, x_key, 0 );
  20.             CvFileNode* ynode = cvGetFileNode( fs, pt, y_key, 0 );
  21.             assert( xnode && CV_NODE_IS_INT(xnode->tag) &&
  22.                     ynode && CV_NODE_IS_INT(ynode->tag));
  23.             int x = xnode->data.i; // or x = cvReadInt( xnode, 0 );
  24.             int y = ynode->data.i; // or y = cvReadInt( ynode, 0 );
  25. #elif 1 /* 慢变量:不使用x值与y值  */
  26.             CvFileNode* xnode = cvGetFileNodeByName( fs, pt, "x" );
  27.             CvFileNode* ynode = cvGetFileNodeByName( fs, pt, "y" );
  28.             assert( xnode && CV_NODE_IS_INT(xnode->tag) &&
  29.                     ynode && CV_NODE_IS_INT(ynode->tag));
  30.             int x = xnode->data.i; // or x = cvReadInt( xnode, 0 );
  31.             int y = ynode->data.i; // or y = cvReadInt( ynode, 0 );
  32. #else /* 最慢的可以轻松使用的变量  */
  33.             int x = cvReadIntByName( fs, pt, "x", 0 /* default value */ );
  34.             int y = cvReadIntByName( fs, pt, "y", 0 /* default value */ );
  35. #endif
  36.             CV_NEXT_SEQ_ELEM( seq->elem_size, reader );
  37.             printf("%d: (%d, %d)n", i, x, y );
  38.         }
  39.     }
  40.     cvReleaseFileStorage( &fs );
  41.     return 0;
  42. }