所以现在我正在尝试使用MatLab和C ++创建深度图像像素强度的三维表面图。
我已经将每个像素的值保存到名为base
的数组中,该数组具有整个图像维度的大小:
int base[DIMENSION];
然后我使用mxCreateDoubleMatrix
为matlab创建了我的mxArray
指针,并尝试使用mxArray
函数将基本数组的内容传输到后面提到的memcpy
中:
mxArray* Floor = mxCreateDoubleMatrix(VERTICAL, HORIZONTAL, mxREAL);
memcpy((void *)mxGetPr(Floor), (void *)base, sizeof(int)*(370*386));
engPutVariable(m_pEngine, "Floor", Floor);
engEvalString(m_pEngine, "surf(Floor)");
通过这种方法,我只得到一个空白的三维图。
我尝试过的另一种方法是尝试使用mxCreateNumericMatrix
函数。
mxArray* Floor = mxCreateNumericMatrix(VERTICAL, HORIZONTAL, mxINT8_CLASS,mxREAL);
memcpy((void *)mxGetPr(Floor), (void *)base, sizeof(int)*(370*386));
engPutVariable(m_pEngine, "Floor", Floor);
engEvalString(m_pEngine, "surf(Floor)");
system("pause");
但是使用后面的方法我得到了运行时异常。