C语言版本opencv中CvArr和CvMat和IplImage之间关系
2015-12-15 09:52
351 查看
opencv由C语言实现,但它用的结构体也是遵循面向对象的思想设计的。实际上IplImage由CvMat派生,而CvMat由CvArr派生。但CvMat和IplImage之间的关系就如同C++中的继承关系。实质上IplImage可以被认为从CvMat中派生的。第三个类CvArr,可以被视为一个抽象基类,CvMat由它派生。在函数原型中,会经常看到CvArr(更准确地说,CvArr*),当它出现时,便可以将CvMat*或者IplImage*传递到程序。
1、CvMat矩阵结构
typedef struct CvMat
{
int type;
int step;
/* for internal use only */
int* refcount;
int hdr_refcount;
union
{
uchar* ptr;
short* s;
int* i;
float* fl;
double* db;
} data;
#ifdef __cplusplus
union
{
int rows;
int height;
};
union
{
int cols;
int width;
};
#else
int rows;
int cols;
#endif
}
CvMat;
相关文章推荐
- C++到JAVA的痛苦经验分享
- C++动态分配内存的字符串
- C++中导致程序效率变低的一些细节
- C++传递函数指针
- C++ Primer 学习笔记_2_高速入口(继续)
- C++操作word:插入文字、图片、表格,设置样式字体
- C语言字节对齐
- C++教材
- 关于C++ cin的问题
- CPP-Templates
- C++primer_拷贝控制之13.26联系控制成员实现类值行为
- C++双向循环链表实现
- c++ 动态规划(重构解).
- c++引入依赖 include (转)
- 黑马程序员--C语言自学笔记---03运算符
- c++ 浅复制与深复制
- C++实现简单的双向链表
- 单链表的操作_二分查找
- 哈夫曼(Huffman)编码问题(C++实现)
- CPP-operator==, <overloading