opencv中文手册内容摘要:

t = cvCreateMatHeader( rows, cols, type )。 cvCreateData( mat )。 矩阵按行存贮 . 所有的行以 4 个字节排列。 CreateMatHeader 创建新的矩阵头 CvMat* cvCreateMatHeader( int rows, int cols, int type )。 rows 矩阵行数 . cols 矩阵列数 . type 矩阵元素类型 (见 cvCreateMat). 函数 cvCreateMatHeader 分配新的矩阵头并且返回指向它的指针 . 矩阵数据可被进一步的分配,使用 cvCreateData 或通过 cvSetData明确的分配数据 . ReleaseMat 删除矩阵 void cvReleaseMat( CvMat** mat )。 mat 双指针指向矩阵 . 函数 cvReleaseMat 缩减矩阵数据参考计数并且释放矩阵头 : if( *mat ) cvDecRefData( *mat )。 cvFree( (void**)mat )。 InitMatHeader 初始化矩阵头 CvMat* cvInitMatHeader( CvMat* mat, int rows, int cols, int type, void* data=NULL, int step=CV_AUTOSTEP )。 mat 指针指向要被初始化的矩阵头 . rows 矩阵的行数 . cols 矩阵的列数 . type 矩阵元素类型 . data 可选的,将指向数据指针分配给矩阵头 . step 排列后的数据的整个行宽,默认状态下,使用 STEP 的最小可能值。 例如假定矩阵的行与行之间无隙 函数 cvInitMatHeader 初始化已经分配了的 CvMat 结构 . 它可以被OpenCV 矩阵函数用于处理原始数据。 例如 , 下面的代码计算通用数组格式存贮的数据的矩阵乘积 . 计算两个矩阵的积 double a[] = { 1, 2, 3, 4 5, 6, 7, 8, 9, 10, 11, 12 }。 double b[] = { 1, 5, 9, 2, 6, 10, 3, 7, 11, 4, 8, 12 }。 double c[9]。 CvMat Ma, Mb, Mc。 cvInitMatHeader( amp。 Ma, 3, 4, CV_64FC1, a )。 cvInitMatHeader( amp。 Mb, 4, 3, CV_64FC1, b )。 cvInitMatHeader( amp。 Mc, 3, 3, CV_64FC1, c )。 cvMatMulAdd( amp。 Ma, amp。 Mb, 0, amp。 Mc )。 // c 数组存贮 a(3x4) 和 b(4x3) 矩阵的积 Mat 初始化矩阵的头 (轻磅变量 ) CvMat cvMat( int rows, int cols, int type, void* data=NULL )。 rows 矩阵行数 cols 列数 . type 元素类型 (见 CreateMat). data 可选的分配给矩阵头的数据指针 . 函数 cvMat 是个一快速内连函数,替代函数 cvInitMatHeader. 也就是说他相当于 : CvMat mat。 cvInitMatHeader( amp。 mat, rows, cols, type, data, CV_AUTOSTEP )。 CloneMat 创建矩阵拷贝 CvMat* cvCloneMat( const CvMat* mat )。 mat 输入矩阵 . 函数 cvCloneMat 创建输入矩阵的一个拷贝并且返回 该矩阵的指针 . CreateMatND 创建多维 密集数组 CvMatND* cvCreateMatND( int dims, const int* sizes, int type )。 dims 数组维数 . 但不许超过 CV_MAX_DIM (默认 =32,但这个默认值可能在编译时被改变 )的定义 sizes 数组的维大小 . type 数组元素类型 . 与 CvMat 相同 函数 cvCreateMatND 分配头给多维密集数组并且分配下面的数据,返回指向被创建数组的指针 . 是下列的缩减形式 : CvMatND* mat = cvCreateMatNDHeader( dims, sizes, type )。 cvCreateData( mat )。 矩阵按行存贮 . 所有的行以 4 个字节排列。 . CreateMatNDHeader 创建新的数组头 CvMatND* cvCreateMatNDHeader( int dims, const int* sizes, int type )。 dims 数组维数 . sizes 维大小 . type 数组元素类型 . 与 CvMat 相同 函数 cvCreateMatND 分配头给多维密集数组。 数组数据可以用 cvCreateData 进一步的被分配或利用 cvSetData 由用户明确指定 . ReleaseMatND 删除多维数组 void cvReleaseMatND( CvMatND** mat )。 mat 指向数组的双指针 . 函数 cvReleaseMatND 缩减数组参考计数并释放数组头 : if( *mat ) cvDecRefData( *mat )。 cvFree( (void**)mat )。 InitMatNDHeader 初始化多维数组头 CvMatND* cvInitMatNDHeader( CvMatND* mat, int dims, const int* sizes, int type, void* data=NULL )。 mat 指向要被出初始化的数组头指针 . dims 数组维数 . sizes 维大小 . type 数组元素类型 . 与 CvMat 相同 data 可选的分配给矩阵头的数据指针 . 函数 cvInitMatNDHeader 初始化 用户指派的 CvMatND 结构 . CloneMatND 创建多维数组的完整拷贝 CvMatND* cvCloneMatND( const CvMatND* mat )。 mat 输入数组 函数 cvCloneMatND 创建输入数组的拷贝并返回指针 . DecRefData 缩减数组数据的参考计数 void cvDecRefData( CvArr* arr )。 arr 数组头 . 函数 cvDecRefData 缩减 CvMat 或 CvMatND 数据的参考计数,如参考计数指针非 NULL 并且计数到 0 就删除数据,在当前的执行中只有当数据是用 cvCreateData 分配的参考计算才会是非 NULL,换句话说 : 使用 cvSetData 指派外部数据给头 矩阵 头代表部分大的矩阵或图像 矩阵头是从图像头或 N 维矩阵头转换过来的。 参考计数如果被设置成 NULL 就不会被缩减 . 无论数据是否被删除 ,数据指针和参考计数指针都将被这个函数清空。 IncRefData 增加数组数据的参考计数 int cvIncRefData( CvArr* arr )。 arr 数组头 . 函数 cvIncRefData 增加 CvMat 或 CvMatND 数据参考计数,如果参考计数非空返回新的计数值 否则返回 0。 CreateData 分配数组数据 void cvCreateData( CvArr* arr )。 arr 数组头 . 函数 cvCreateData 分配图像,矩阵或多维数组数据 . 对于矩阵类型使用 OpenCV 的分 配函数,对于 IplImage 类型如果CV_TURN_ON_IPL_COMPATIBILITY 没有被调用也是可以使用这种方法的反之使用 IPL 函数分配数据 ReleaseData 释放数组数据 void cvReleaseData( CvArr* arr )。 arr 数组头 函数 cvReleaseData 释放数组数据 . 对于 CvMat 或 CvMatND 结构只需调用 cvDecRefData(), 也就是说这个函数不能删除外部数据。 见 cvCreateData. SetData 指派用户数据给数组头 void cvSetData( CvArr* arr, void* data, int step )。 arr 数组头 . data 用户数据 . step 整行字节长 . 函数 cvSetData 指派用记数据给数组头 . 头应该已经使用 cvCreate*Header, cvInit*Header 或 cvMat (对于矩阵 )初始化过 . GetRawData 返回组数的底层信息 void cvGetRawData( const CvArr* arr, uchar** data, int* step=NULL, CvSize* roi_size=NULL )。 arr 数组头 . data 输出指针,指针指向整个图像的结构或 ROI step 输出行字节长 roi_size 输出 ROI 尺寸 函数 cvGetRawData 添充给输出变量数组的底层信息。 所有的输出参数是可选的 , 因此这些指针可设为 NULL. 如果数组是设置了 ROI 的 IplImage 结构 , ROI 参数被返回。 接下来的例子展示怎样去接近数组元素。 使用 GetRawData 计算单通 道浮点数组的元素绝对值 . float* data。 int step。 CvSize size。 int x, y。 cvGetRawData( array, (uchar**)amp。 data, amp。 step, amp。 size )。 step /= sizeof(data[0])。 for( y = 0。 y。 y++, data += step ) for( x = 0。 x。 x++ ) data[x] = (float)fabs(data[x])。 GetMat 从不确定数组返回矩阵头 CvMat* cvGetMat( const CvArr* arr, CvMat* header, int* coi=NULL, int allowND=0 )。 arr 输入数组 . header 指向 CvMat 结构的指针,作为临时缓存 . coi 可选的输出参数,用于输出 COI. allowND 如果非 0,函数就接收多维密集数组 (CvMatND*)并且返回 2D (如果 CvMatND 是二维的)或 1D 矩阵 (当 CvMatND 是一维或多于二维 ). 数组必须是连续的 . 函数 cvGetMat从输入的数组生成矩阵头,输入的数组可以是 CvMat结构 , IplImage 结构 或多维密集数组 CvMatND* (后者只有当 allowND != 0 时才可以使用 ) . 如果是矩阵函数只是返回指向矩阵的指针 .如果是 IplImage* 或 CvMatND* 函数用当前图像的 ROI 初始化头结构并且返回指向这个临时结构的指 针。 因为 CvMat 不支持 COI,所以他们的返回结果是不同的 . 这个函数提供了一个简单的方法,用同一代码处理 IplImage 和 CvMat 二种数据类型。 这个函数的反向转换可以用 cvGetImage 将 CvMat 转换成 IplImage . 输入的数组必须有已分配好的底层数据或附加的数据,否则该函数将调用失败 如果输入的数组是 IplImage 格式,使用平面式数据编排并设置了 COI,函数返回的指针指向被选定的平面并设置 COI= OPENCV函数对于多通道平面编排图像可以处理每个平面。 GetImage 从不确定数组返回图像头。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。