如何使用Matlab MEX将图像传递到二维阵列 < >我想读取一些图像来运行C++ MeX函数来处理这个图像。图像最初存储为Matlab 3D矩阵,然后转换为2D矩阵,图像的每个切片存储为1D向量。下面是一些示例代码
第一:MEX功能:如何使用Matlab MEX将图像传递到二维阵列 < >我想读取一些图像来运行C++ MeX函数来处理这个图像。图像最初存储为Matlab 3D矩阵,然后转换为2D矩阵,图像的每个切片存储为1D向量。下面是一些示例代码,c++,arrays,matlab,mex,C++,Arrays,Matlab,Mex,第一:MEX功能: #include "mex.h" void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { unsigned int** ubuff; size_t col_ubuff = mxGetN(prhs[0]); size_t row_ubuff = mxGetM(prhs[0]); ubuff = (unsigned int **)m
#include "mex.h"
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {
unsigned int** ubuff;
size_t col_ubuff = mxGetN(prhs[0]);
size_t row_ubuff = mxGetM(prhs[0]);
ubuff = (unsigned int **)mxCalloc(col_ubuff, row_ubuff);
for(int x = 0; x < col_ubuff; x++) {
ubuff[x] = (unsigned int *) mxCalloc(row_ubuff, sizeof(unsigned int));
}
for (int col=0; col < col_ubuff; col++) {
for (int row=0; row < row_ubuff; row++) {
ubuff[col][row] = mxGetPr(prhs[0])[row+col*row_ubuff];
}
}
unsigned int the_pixel_i_want = ubuff[16][2*32 + 2];
printf ("Debug: %d\n\n", the_pixel_i_want);
return;
}
但输出有时为188,有时为0。我的代码中有内存泄漏吗?非常感谢你的帮助
编辑:
谢谢你的编辑。我从别人那里找到了一条路。把它放在这里是为了其他人的利益 1) 线路 应该是
ubuff = (unsigned int **)mxCalloc(col_ubuff, sizeof(unsigned int *));
ubuff[col][row] = ((unsigned int *)mxGetData(prhs[0]))[row+col*row_ubuff];
2) 线路
应该是
ubuff = (unsigned int **)mxCalloc(col_ubuff, sizeof(unsigned int *));
ubuff[col][row] = ((unsigned int *)mxGetData(prhs[0]))[row+col*row_ubuff];
谢谢你的编辑。我从别人那里找到了一条路。把它放在这里是为了其他人的利益。最好把你的答案作为答案而不是问题的延伸。因此,这是完全冷静的。然后,经过一段适当的时间,你可以接受自己的答案。通过发布一个答案,我们中间的食草动物可以立即看到这个问题已经得到了回答,并将我们的可怜的妓女代表拖到下一个未回答的问题。
ubuff[col][row] = ((unsigned int *)mxGetData(prhs[0]))[row+col*row_ubuff];