为什么我收到一个“无法分配内存错误时从我的相机获取图像吗?

39视图(30天)
我试图从我的罗技摄像头获取图像(使用“winvideo”适配器)在R2021a,但我收到以下错误消息:
无法分配内存的传入的图像帧由于自由物理内存不足。
我的“记忆”命令的输出如下:
> >内存
最大可能的数组:3946 MB (4.138 e + 09字节)*所有阵列可用内存:3946 MB (4.138 e + 09字节)*内存使用MATLAB: 2684 MB (2.814 e + 09字节)物理内存(RAM): 16112 MB (1.689 e + 10个字节)
*受限于可用的系统内存(物理+交换文件)。
我能做些什么来解决这个错误?

接受的答案

MathWorks支金宝app持团队
鉴于“记忆”命令的输出,这可能是一个问题由于缺乏可用的RAM的机器上。如果我们看一下内存使用,我们可以看到机器分配12 GB总16 GB的其他程序,和4 GB, MATLAB可以使用,它已经使用约2.6 GB。这使得一个相对较小的剩余1.4 GB的内存了MATLAB计算和数据存储。
有几个方法来解决这个问题:
  • 关闭所有其他程序上运行的机器,不需要图像采集和分析过程。这将释放内存,MATLAB可以利用。
  • 你可以“储备”一些内存使用MATLAB的预分配矩阵,最终将存储图像。在程序的开始,你可以分配一个零的矩阵大小一样的图像,然后您可以覆盖这个矩阵的图像捕获时传入的图像数据。例如,如果你正在等待一个1920 x1080 RGB图像,使用分配矩阵
> > 0 (1920、1080、3)
只要有足够的可用内存的程序来分配这个矩阵的零,你永远不会删除这个矩阵,实际上,MATLAB将保留足够的内存来存储传入的图像数据。
  • 明确的变量从MATLAB工作区,并没有被用于图像采集和分析,这将增加可用内存。
  • 减少内存工作区中所使用的变量可能通过使用最小的数据类型。例如,使用矩阵的数据类型双单而不是默认的数据类型。
  • 在你的机器上安装更多的RAM或使用安装了更多的物理RAM的机器,如果你需要其他项目同时运行。

更多的答案(0)

下载188bet金宝搏


释放

R2021a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!