方法是类似的(下面的例子都是针对 0 起点的列和行)
设有 32-bit 浮点数的实数矩阵 M (CvMat* mat):
----------------------------------------------------------------------------
M(i,j) ~ ((float*)(mat->data.ptr + mat->step*i))[j]
----------------------------------------------------------------------------
设有 64-bit 浮点数的复数矩阵 M (CvMat* mat):
----------------------------------------------------------------------------
Re M(i,j) ~ ((double*)(mat->data.ptr + mat->step*i))[j*2]
Im M(i,j) ~ ((double*)(mat->data.ptr + mat->step*i))[j*2+1]
----------------------------------------------------------------------------
对单通道矩阵,有宏 CV_MAT_ELEM( matrix, elemtype, row, col ), 例如对 32-bit
浮点数的实数矩阵:
M(i,j) ~ CV_MAT_ELEM( mat, float, i, j ),
例如,这儿是一个 3x3 单位矩阵的初始化:
CV_MAT_ELEM( mat, float, 0, 0 ) = 1.f;
CV_MAT_ELEM( mat, float, 0, 1 ) = 0.f;
CV_MAT_ELEM( mat, float, 0, 2 ) = 0.f;
CV_MAT_ELEM( mat, float, 1, 0 ) = 0.f;
CV_MAT_ELEM( mat, float, 1, 1 ) = 1.f;
CV_MAT_ELEM( mat, float, 1, 2 ) = 0.f;
CV_MAT_ELEM( mat, float, 2, 0 ) = 0.f;
CV_MAT_ELEM( mat, float, 2, 1 ) = 0.f;
CV_MAT_ELEM( mat, float, 2, 2 ) = 1.f;