我有一个有趣的问题。也就是这样;我正在尝试通过 mex 函数在内部使用 std::memcpy 函数,并像这样在 MATLAB 中调用该 mex 函数;
I2 = b_filter(I);
当我复制整个图像时,效果很好;
plhs[0] = mxCreateDoubleMatrix(mxGetM(plhs[0]), mxGetN(plhs[0]), mxREAL);
memcpy(mxGetPr(plhs[0]), mxGetPr(prhs[0]), sizeof(double) *mxGetM(plhs[0]) * mxGetN(plhs[0]));
但是当我尝试复制图像的某些部分时
plhs[0] = mxCreateDoubleMatrix(100, 100, mxREAL);
memcpy(mxGetPr(plhs[0]), mxGetPr(prhs[0]), sizeof(double) * 100 * 100);
它没有给出正确的图像部分,而是给出了无意义的像素值。
那么这里发生了什么?