我将尝试将视频转换为图像序列,我在MathWorks上看到的代码如下:
读取并播放xylophone.mp4电影文件。
读取并播放xylophone.mp4电影文件。
xyloObj = VideoReader('xylophone.mp4');
nFrames = xyloObj.NumberOfFrames;
vidHeight = xyloObj.Height;
vidWidth = xyloObj.Width;
预分配电影结构。
mov(1:nFrames) = ...
struct('cdata',zeros(vidHeight,vidWidth, 3,'uint8'),...
'colormap',[]);
一次只读取一个帧。
for k = 1 : nFrames
mov(k).cdata = read(xyloObj,k);
end
当我尝试运行这段代码时,编译需要很长时间。有没有一种不用循环就可以读取所有帧的方法,以使其更快?
读取
调用。一旦你这样做了,那么只需要切片到图像序列矩阵中获取所需的帧。然而,这将占用大量内存,因此你必须决定什么对你来说更好、更容易... 要么逐帧读取一个帧,要么一次性完成。 - rayryengread
,从那时起,帧将可供您使用。 :) 我已编辑我的帖子以反映这一点。 - rayryeng