【发布时间】:2016-03-06 22:18:34
【问题描述】:
我正在编写一个获取视频帧的 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 不是意味着'输入不会在墨西哥改变'吗?
【问题讨论】: