OpenCV学习之CvMat的用法详解及实例.doc

OpenCV学习之CvMat的用法详解及实例.doc

ID:52916203

大小:21.13 KB

页数:10页

时间:2020-03-31

OpenCV学习之CvMat的用法详解及实例.doc_第1页
OpenCV学习之CvMat的用法详解及实例.doc_第2页
OpenCV学习之CvMat的用法详解及实例.doc_第3页
OpenCV学习之CvMat的用法详解及实例.doc_第4页
OpenCV学习之CvMat的用法详解及实例.doc_第5页
资源描述:

《OpenCV学习之CvMat的用法详解及实例.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、OpenCV学习之CvMat的用法详解及实例目录1.初始化矩阵:12.IplImage到cvMat的转换13.cvArr(IplImage或者cvMat)转化为cvMat14.图像直接操作25.cvMat的直接操作36.间接访问cvMat47.修改矩阵的形状——cvReshape的操作58.计算色彩距离7CvMat是OpenCV比较基础的函数。初学者应该掌握并熟练应用。但是我认为计算机专业学习的方法是,不断的总结并且提炼,同时还要做大量的实践,如编码,才能记忆深刻,体会深刻,从而引导自己想更高层次迈进。1.初始化矩阵:方式一、逐点赋值式:CvMat*m

2、at=cvCreateMat(2,2,CV_64FC1);cvZero(mat);cvmSet(mat,0,0,1);cvmSet(mat,0,1,2);cvmSet(mat,1,0,3);cvmSet(mat,2,2,4);cvReleaseMat(&mat);方式二、连接现有数组式:doublea[]={1,2,3,4,              5,6,7,8,              9,10,11,12};CvMatmat=cvMat(3,4,CV_64FC1,a);//64FC1fordouble//不需要cvReleaseMat,因为数

3、据内存分配是由double定义的数组进行的。2.IplImage到cvMat的转换方式一、cvGetMat方式:CvMatmathdr,*mat=cvGetMat(img,&mathdr);方式二、cvConvert方式:CvMat*mat=cvCreateMat(img->height,img->width,CV_64FC3);cvConvert(img,mat);//#definecvConvert(src,dst)cvConvertScale((src),(dst),1,0)3.cvArr(IplImage或者cvMat)转化为cvMat方式一、

4、cvGetMat方式:intcoi=0;cvMat*mat=(CvMat*)arr;if(!CV_IS_MAT(mat)){   mat=cvGetMat(mat,&matstub,&coi);   if(coi!=0)reutn;//CV_ERROR_FROM_CODE(CV_BadCOI);}写成函数为://Thisisjustanexampleoffunction//tosupportbothIplImageandcvMatasaninputCVAPI(void)cvIamArr(constCvArr*arr){   CV_FUNCNAME("c

5、vIamArr");   __BEGIN__;   CV_ASSERT(mat==NULL);   CvMatmatstub,*mat=(CvMat*)arr;   intcoi=0;   if(!CV_IS_MAT(mat))   {       CV_CALL(mat=cvGetMat(mat,&matstub,&coi));       if(coi!=0)CV_ERROR_FROM_CODE(CV_BadCOI);   }   //ProcessascvMat   __END__;}4.图像直接操作方式一:直接数组操作intcol,row,z;

6、ucharb,g,r;for(y=0;rowheight;y++){  for(col=0;colwidth;col++)  {    b=img->imageData[img->widthStep*row+col*3]    g=img->imageData[img->widthStep*row+col*3+1];    r=img->imageData[img->widthStep*row+col*3+2];  }}方式二:宏操作:introw,col;ucharb,g,r;for(row=0;rowheight

7、;row++){  for(col=0;colwidth;col++)  {    b=CV_IMAGE_ELEM(img,uchar,row,col*3);    g=CV_IMAGE_ELEM(img,uchar,row,col*3+1);    r=CV_IMAGE_ELEM(img,uchar,row,col*3+2);  }}注:CV_IMAGE_ELEM(img,uchar,row,col*img->nChannels+ch)5.cvMat的直接操作数组的直接操作比较郁闷,这是由于其决定于数组的数据类型。对于CV_32FC1(1

8、channelfloat):CvMat*M=cvCreateMat(4,4,CV_32FC1)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。