CvMat* mat;
mat = cvCreateMat(9,10,CV_64FC3);
//注意所申请矩阵元素的类型,不同的类型访问操作方法不同,但类似可推导,以此为例。
opencv中的多通道矩阵CvMat元素的访问方法总结如下:
1. mat(i,j,1):*(mat->data.db + i*(mat->step/8) + 3*j);
//.db为double数据类型,step类型为int,代表矩阵每行的字节数,因此要处以sizeof(double)=8。
mat(i,j,2):*(mat->data.db + i*(mat->step/8) + 3*j+1);
mat(i,j,3):*(mat->data.db + i*(mat->step/8) + 3*j+2);
2.mat(i,j,1):((double*)(mat->data.ptr+i*mat->step))[3*j];
//ptr的类型为uchar*,step类型为int,代表矩阵每行的字节数。另外指针可以当做数组名,因此可以这样操作。
mat(i,j,2):((double*)(mat->data.ptr+i*mat->step))[3*j+1];
mat(i,j,3):((double*)(mat->data.ptr+i*mat->step))[3*j+2];
3.mat(i,j,1):*( (double*)(mat->data.ptr+i*mat->step) + 3*j );
//根据以上也可以这样,总之就是C语言中的指针操作啦,要注意指针的类型,以及step的单位是字节就可以了。