poster
2019-12-10, 20:48
我使用零来初始化矩阵,如下所示:
height = 352 width = 288 nFrames = 120 imgYuv=zeros([height,width,3,nFrames]); 但是,当我将nFrames的值设置为大于120时,MATLAB会给我一条错误消息,提示内存不足。
原始功能是
[imgYuv, S, A]= changeYuv(fileName, width, height, idxFrame, nFrames) 我的命令是
[imgYuv,S,A]=changeYuv('tilt.yuv',352,288,1:120,120); 谁能告诉我这是怎么回事?
PS:此功能的目的之一是加载包含2000帧以上的yuv视频。是否有可能实施?
回答:
避免错误的三种方法
在任何给定时间处理有限数量的帧。
使用整数数组。大多数电影都是8位格式,而Matlab通常使用doubles格式。 uint8每个元素占用1个字节,而double占用8个字节。因此,如果您以B = zeros(height,width,3,nFrames,'uint8 )`创建数组,则仅使用内存的1/8。这可能适用于120帧,但是对于2000帧,您将再次遇到麻烦。注意,并不是所有的Matlab函数都适用于整数数组。您可能需要重新实现那些需要加倍处理的功能。
购买更多RAM。
更多&回答... (https://stackoverflow.com/questions/3976014)
height = 352 width = 288 nFrames = 120 imgYuv=zeros([height,width,3,nFrames]); 但是,当我将nFrames的值设置为大于120时,MATLAB会给我一条错误消息,提示内存不足。
原始功能是
[imgYuv, S, A]= changeYuv(fileName, width, height, idxFrame, nFrames) 我的命令是
[imgYuv,S,A]=changeYuv('tilt.yuv',352,288,1:120,120); 谁能告诉我这是怎么回事?
PS:此功能的目的之一是加载包含2000帧以上的yuv视频。是否有可能实施?
回答:
避免错误的三种方法
在任何给定时间处理有限数量的帧。
使用整数数组。大多数电影都是8位格式,而Matlab通常使用doubles格式。 uint8每个元素占用1个字节,而double占用8个字节。因此,如果您以B = zeros(height,width,3,nFrames,'uint8 )`创建数组,则仅使用内存的1/8。这可能适用于120帧,但是对于2000帧,您将再次遇到麻烦。注意,并不是所有的Matlab函数都适用于整数数组。您可能需要重新实现那些需要加倍处理的功能。
购买更多RAM。
更多&回答... (https://stackoverflow.com/questions/3976014)