opencv初探(一)

Opencv 基本数据类型
“…/OpenCV/cxcore/include/cxtypes.h”
CvPoint 包含Interger类型成员x和y的简单结构体
CvPoint两个变体类型:CvPoint2D32f 包含Float类型成员x和y
CvPoint3D32f 包含Float类型成员x,y,z

CvSize 包含Interger类型成员width和height
变体类型:CvSize2D32f

CvRect类型派生于CvPoint 和 CvSize,包含4个数据成员:x,y,width,height

CvScalar,成员double val[4]
这个 CvScalar就是一个可以用来存放4个double数值的数组,一般用来存放像素值,最多可以存放4个通道的。
typedef struct CvScalar
{
  double val[4];
  }CvScalar;

CvScalar有3个构造函数
CvScalar()
CvRealScalar()
CvScalarAll()
a) 存放单通道图像中像素:cvScalar(255);
b) 存放三通道图像中像素:cvScalar(255,255,255);
2. inline CvScalar cvRealScalar( double val0 );
//只使用第一个通道,val[0]=val0;等同于cvScalar(val0,0,0,0);
3. inline CvScalar cvScalarAll( double val0123 );
//所用通道值用同一个val0123赋值

矩阵和图像类型
IplImage是我们用来为通常所说的”图像“进行编码的基本结构。
IplImage由CvMat派生,CvMat由CvArr派生
CvArr是以被视为一个抽象基类,当参数中出现CvArr时,可以将CvMat* IplImage*传送到程序

CvMat矩阵结构
OpenCV中没有向量存在,需要使用向量时,使用列矩阵即可
OpenCV中的矩阵概念更为抽象,尤其是数据类型。
CvMat的结构很简单,包含width,height,类型type,行数据长度step和一个指向数据的指针构成。

Cvmat结构:矩阵头,很多程序是区分矩阵头和数据体的,后者是各个data成员所指向的内存位置。
矩阵创建方法:cvCreateMat(),他由多个原函数组成,如cvCreateMatHeader(),cvCreateData().
cvCreateMatHeader()函数创建CvMat结构,不为数据分配内存
cvCreateData()函数只负责数据的内存分配
cvCloneMat(CvMat*),它根据一个现有矩阵创建一个新的矩阵
不需要这个矩阵时,可以调用函数cvReleaseMat(CvMat*)释放它
分配矩阵空间:
CvMat* cvCreateMat(int rows, int cols, int type); type: 矩阵元素类型. 格式为CV_(S|U|F)C. 例如: CV_8UC1 表示8位无符号单通道矩阵, CV_32SC2表示32位有符号双通道矩阵. 例程: CvMat* M = cvCreateMat(4,4,CV_32FC1);
释放矩阵空间:
CvMat* M = cvCreateMat(4,4,CV_32FC1);
cvReleaseMat(&M);

复制矩阵:
CvMat* M1 = cvCreateMat(4,4,CV_32FC1);
CvMat* M2;
M2=cvCloneMat(M1);

初始化矩阵:
double a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
CvMat Ma=cvMat(3, 4, CV_64FC1, a);
另一种方法:
CvMat Ma;
cvInitMatHeader(&Ma, 3, 4, CV_64FC1, a);

查询数组定义和数据访问
查询矩阵:
cvGetElemType(const CvArr* arr):返回整型常数,表示存储在数组里的元素类型
cvGetDims(const CvArr* arr,int* sizes=NULL):取出数组以及一个可选择的整型指针,它返回维数
cvGetDimSize(const CvArr *arr,int index):通过一个指示维数的整型数简单的返回矩阵在那个维数上矩阵的大小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值