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的单位是字节就可以了。
opencv中的多通道矩阵CvMat元素的访问
最新推荐文章于 2023-04-17 00:03:57 发布