资源描述:
《OpenCV学习之CvMat的用法详解及实例》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、OpenCV学习之CvMat的用法详解及实例目录1.初始化矩阵:...................................22.IplImage到cvMat的转换.........................23.cvArr(IplImage或者cvMat)转化为cvMat...........24.图像直接操作...................................35.cvMat的直接操作................................36.间接访问cvMat..................................57.修改矩阵的
2、形状——cvReshape的操作..............68.计算色彩距离...................................8CvMat是OpenCV比较基础的函数。初学者应该掌握并熟练应用。但是我认为计算机专业学习的方法是,不断的总结并且提炼,同时还要做大量的实践,如编码,才能记忆深刻,体会深刻,从而引导自己想更高层次迈进。1.初始化矩阵:方式一、逐点赋值式:CvMat*mat=cvCreateMat(2,2,CV_64FC1);cvZero(mat);cvmSet(mat,0,0,1);cvmSet(mat,0,1,2);cvmSet(mat,1,0,3);cvm
3、Set(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,因为数据内存分配是由double定义的数组进行的。2.IplImage到cvMat的转换方式一、cvGetMat方式:CvMatmathdr,*mat=cvGetMat(img,&mathdr);方式二、cvConvert方式:CvMat*mat=cvCreateMat(img->height,i
4、mg->width,CV_64FC3);cvConvert(img,mat);//#definecvConvert(src,dst)cvConvertScale((src),(dst),1,0)3.cvArr(IplImage或者cvMat)转化为cvMat方式一、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);}写成函数为://Thisisjustanexa
5、mpleoffunction//tosupportbothIplImageandcvMatasaninputCVAPI(void)cvIamArr(constCvArr*arr){CV_FUNCNAME("cvIamArr");__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);}//Processascv
6、Mat__END__;}4.图像直接操作方式一:直接数组操作intcol,row,z;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;rowh
7、eight;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->nChan