在矩阵存储上,matlab是按列存储,c++是按行存储,含义如下:
矩阵mat:
1 3 2
0 4 5
在内存中都是字节相连存储的,
matlab存储格式是:103425
c++存储格式是:132045
matlab矩阵转换为c++矩阵如下函数所示:
void mx_2_mat(const mxArray* mx,Mat &mat)
{double* db;
if (!mxIsEmpty(mx))
db = mxGetPr(mx);
else
return;
CvMat *pMat = cvCreateMatHeader(mxGetN(mx),mxGetM(mx),CV_64FC1);// mxGetN(mx) = 3,mxGetM(mx)=2
cvSetData(pMat,db,pMat->step);
mat = cvarrToMat(pMat,true);
mat = mat.t();
cvReleaseMat(&pMat);
}