庖丁解牛——代码段分析

原创 2013年12月05日 16:32:47

下面这段代码来源于opencv的头文件。

#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.       */

/*
   Read/Write sequence.
   Elements can be dynamically inserted to or deleted from the 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;

这段代码的精妙之处在于将指针进行了封装  CV_TREE_NODE_FIELDS(node_type)  从而让指针的定义无区别化,只要更改node_type就能将这个指针节点用在别的定义中。

 

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

庖丁解牛TLD(四)——Tracking解析

前几节都是根据作者的程序流程一步步介绍作者的工作,感觉只是对代码的一个注释,这次换一个思路,一部分一部分啃,作者的工作主要就是3部分么,tracking,learning,detection。 这次...

庖丁解牛TLD(一)——开篇

最近在网上多次看到有关Zdenek Kalal的TLD的文章,说他做的工作如何的帅,看了一下TLD的视频,感觉确实做的很好,有人夸张的说他这个系统可以和Kniect媲美,我倒是两者的工作可比性不大,实...

Lucene3.3、Lucene3.4中文分词——庖丁解牛分词实例

如果是Lucene3.0以上版本首先我们需要下载庖丁解牛最新源码并生成jar文件,我已经将最新源码和jar文件上传了:http://download.csdn.net/detail/a_2cai/36...
  • a_2cai
  • a_2cai
  • 2011-10-10 17:08
  • 1107

庖丁解牛TLD(三)——算法初始化 .

转自:http://blog.csdn.net/yang_xian521/article/details/6957732 上一讲我提到对于算法的初始化工作主要是在tldInit这个函数里实现的。主要...

庖丁解牛TLD(二)——初始化工作(为算法的准备)

我说的初始化,还不是算法的初始化工作,而是读入图像,响应键盘鼠标之类的工作。作者提供的代码中的工作包含了从摄像头读取和从文件中读取两种输入方案。这里介绍一下从文件输入的办法。因为OpenCV从视频读取...

庖丁解牛TLD(五)——井底之蛙啦~

随着和我交流TLD的朋友越来越多,我渐渐的知道的也多了,才发现我研究的结果只是沧海一粟。 这里先膜拜一下Alan Torres大神,他已经用c++把TLD重新写好了,而且代码很规范。他设计的理念有:...

庖丁解牛TLD(三)——算法初始化

上一讲我提到对于算法的初始化工作主要是在tldInit这个函数里实现的。主要分为如下几大步骤,1)初始化Detector。2)初始化Trajectory。3)训练Detector 1)初始化Dete...

庖丁解牛之UPack工作原理及实例分析(3)

 绿盟科技博客巨人背后的安全专家 Toggle navigation Add a menu Search for: 庖丁解牛之UPack工作...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)