我正在研究一个采用视频帧的 Matlab 代码,将它们放在一个单元格数组中,例如
frames{fr} = read(videoObj, fr);
对于示例视频,我检查了帧单元格,它包含 84 帧(视频有 84 帧),并且所有单元格都充满了图像。
我有一个 mex 文件,作为标准,它是这样的
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
正如我已经阅读了 mex 文件创建的属性,他们说输入prhs
是const mxArray
这样,无论在 mex 代码中发生什么,输入都不会改变。我将 matlab 的框架单元格数组作为 mex 文件的输入,就像prhs[0]
框架单元格一样,我做了一些处理(我发誓我不会改变我所接受的内容prhs[0]
)。但是,当我调试 Matlab 代码时,我看到在调用 mex 文件(并将帧作为输入给 mex 文件)之后,我的帧单元格的最后一个单元格似乎被删除了。当我查看第 84 个单元格时,它是[]
,有时它是一个随机数,例如 8 或 4。我不明白当我调用 mex 文件时,我的框架单元格的最后一列如何或为什么消失。
您可能认为我的 Matlab 代码可能有错误,但是当我调试时,我在处理 mex 之前查看了帧,它有 84 个单元格,最后一个单元格是预期的图像,但是在我调用 mex 之后,帧仍然是 84 个单元格,但最后一个单元格是[]
:空的。
如果有人可以帮助我,我将不胜感激,为什么会发生这样的事情?不const mxArray
意味着'输入不会在墨西哥改变'?