资源描述:
《opencv学习之矩阵操作》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、OpenCV学习之矩阵操作1.矩阵创建矩阵创建有多种方法,我们可以用cvCreateMat创建一个矩阵,该函数返回指向这个矩阵的指针,函数原型如下:CvMat* cvCreateMat(intheight,intwidth,inttype);该方法既分配了矩阵头空间,也分配了数据空间。这个方法是最常用的方法。我们也可以使用cvCreateMatHeader函数只创建一个矩阵头,该函数返回指向这个矩阵的指针,函数原型如下:CvMat* cvCreateMatHeader(introws,intcols,inttype);注意这里只为矩阵头分配了空间,没有为矩阵的数据域分配空间。你可以去看一
2、下OpenCV的源代码,cvCreateMat包含了两步,一是头创建,二是数据域创建,函数源码如下:CV_IMPLCvMat*cvCreateMat(intheight,intwidth,inttype){ CvMat*arr=cvCreateMatHeader(height,width,type); cvCreateData(arr); returnarr;}也可以使用cvInitMatHeader方法初始化一个矩阵头,注意这里只对矩阵头进行初始化,既不分配矩阵头空间,也不分配数据域空间,函数原型如下:CvMat* cvInitMatHeader(CvMat*arr,introw
3、s,intcols, inttype,void*data,intstep);2.矩阵释放矩阵释放使用cvReleaseMat函数,函数原型如下:void cvReleaseMat(CvMat**array);otherstaffoftheCentre.Duringthewar,ZhuwastransferredbacktoJiangxi,andDirectorofthenewOfficeinJingdezhen,JiangxiCommitteeSecretary.Startingin1939servedasrecorderoftheWestNorthOrganization,Secret
4、aryoftheSpecialCommitteeAfterthevictoryofthelongMarch,hehasbeentheNorthwestOfficeoftheFederationofStateenterprisesMinister,ShenmufuguSARmissions,DirectorofNingxiaCountypartyCommitteeSecretaryandrecorderoftheCountypartyCommitteeSecretary,Ministersand3.矩阵数据的访问LearningOpenCV介绍了三种方法:(1)简单的方法得到矩阵的一个元素
5、最简单的方法是利用宏CV_MAT_ELEM,该宏有四个参数,传入矩阵,待提取的元素类型,行和列。例如:floatelement_3_2=CV_MAT_ELEM(*mat,float,3,2);设置矩阵的一个值可以使用宏CV_MAT_ELEM_PTR,例如:floatelement_3_2=7.7;*((float*)CV_MAT_ELEM_PTR(*mat,3,2))=element_3_2;注意这些宏每次调用时都重新计算指针,在计划顺序访问矩阵中的所有元素时,缺点尤为突出,这些宏只适合简单访问矩阵中的某个元素。(2)复杂的方法如果仅仅读取数据,使用cvGet*D函数族,cvGet*D函
6、数族有:CvScalar cvGet1D(constCvArr*arr,intidx);CvScalar cvGet2D(constCvArr*arr,inty,intx);CvScalar cvGet3D(constCvArr*arr,intz,inty,intx);CvScalar cvGetND(constCvArr*arr,constint*idx);cvPtr*D函数族cvPtr*D函数族有:uchar* cvPtr1D(constCvArr*arr,intidx,int*_type);uchar* cvPtr2D(constCvArr*arr,inty,intx,int*_t
7、ype);uchar* cvPtr3D(constCvArr*arr,intz,inty,intx,int*_type);uchar* cvPtrND(constCvArr*arr,constint*idx,int*_type, intcreate_node,unsigned*precalc_hashval);otherstaffoftheCentre.Duringthewar,ZhuwastransferredbacktoJian