opencv中CvSeq的用法
来源:互联网 发布:沪昆高铁贵州段 知乎 编辑:程序博客网 时间:2024/05/18 02:44
最近遇到了Opencv中的CvSeq结构的用法,由于我基础较差,刚开始看不懂,不得不花时间去查阅,如果分析的不对还请大家指出来!
CvSeq结构在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;
参考http://blog.csdn.net/yangqiuying/article/details/8500601
大致的含义如下:
#define CVgSEQUENCE\_FIELDS() \
int flags; /* micsellaneous flags */ \
int header_size; /* 序列头的大小 */ \
struct CvSeq* h_prev; /* 前一个序列 */ \
struct CvSeq* h_next; /* 后一个序列 */ \
struct CvSeq* v_prev; /* 第二级前一个序列 */ \
struct CvSeq* v_next; /* 第二级后一个序列 */ \
int total; /* 元素的总个数 */ \
int elem_size;/* 元素的尺寸 */ \
char* block_max;/* 上一块的最大块 */ \
char* ptr; /* 当前写指针 */ \
int delta_elems; /*序列中快的大小
(序列粒度) */ \
CvMemStorage* storage; /*序列的存储位置 */ \
CvSeqBlock* free_blocks; /* 未分配的块序列 */ \
CvSeqBlock* first; /* 指向第一个快序列 */
CvSeq结构中,第一部分#define CV_TREE_NODE_FIELDS(node_type) 和第二部分#define CV_SEQUENCE_FIELDS() 主要用到了#define的多行定义,
第三部分
typedef struct CvSeq
{
CV_SEQUENCE_FIELDS()
}
CvSeq;
主要是定义了一个结构体,其中最后的CvSeq为简化而重新命名,而这里的CV_SEQUENCE_FIELDS()主要是用到了前面的几个宏定义,实现了替换,注意这里是没有分号的。
最后对这个结构体做了一个小的测试,具体代码见:http://download.csdn.net/detail/gxiaob/5106594
对其更深入的探讨请参考http://blog.csdn.net/wqvbjhc/article/details/5497017
- opencv中CvSeq的用法
- openCV中 cvSeq的用法说明
- openCV中 cvSeq的用法说明
- openCV中 cvSeq的用法说明
- openCV中 cvSeq的用法说明
- openCV中 cvSeq的用法说明【转】
- openCV中 cvSeq的用法说明
- openCV中 cvSeq的用法说明
- openCV中 cvSeq的用法说明
- opencv中CvSeq的取点用法
- openCV中 cvSeq的用法说明
- Opencv中CvSeq的理解
- Opencv中CvSeq的理解 [转载]
- OpenCV中寻找轮廓函数cvFindContours的使用说明以及序列cvSeq的用法说明
- OpenCV中寻找轮廓函数cvFindContours的使用说明以及序列cvSeq的用法说明
- OpenCV中寻找轮廓函数cvFindContours的使用说明以及序列cvSeq的用法说明
- OpenCV中寻找轮廓函数cvFindContours的使用说明以及序列cvSeq的用法说明
- OpenCV中寻找轮廓函数cvFindContours的使用说明以及序列cvSeq的用法说明
- C++ vector容器使用 排序
- 使用ThreadLocal与JDK动态代理 实现事务AOP管理
- 获取上个月第一天和最后一天日期
- OpenStack的架构详解(8)
- php代码优化方法,加速运行速度的技巧总结
- opencv中CvSeq的用法
- PHP使用PEAR的auth_http类库用身份校验
- WPF - ListBox显示任意内容
- C语言socket判断网络是否联通(支持域名/附源码)
- OpenStack的架构详解(9)
- JavaScript 基础之一
- OpenStack的架构详解(10)
- 显示乱码问题
- OpenStack的架构详解(11)