【问题标题】:Save extracted video frames as images将提取的视频帧保存为图像
【发布时间】:2016-11-14 17:46:42
【问题描述】:

我希望截取视频帧并将每个帧作为图像保存在我桌面上的文件夹中。但是,我只想捕获某些帧,它们是写在文本文档中的。

我的问题是,我如何读取存储在此文本文档中的帧编号并仅将这些帧提取到 png 文件中?

感谢您提供的任何帮助。如果我需要澄清任何事情,请询问。

frames = dlmread('Frames.txt');

%getting no of frames
numFrames = mov.NumberOfFrames;

%setting current status of number of frames written to zero
numFramesWritten = 0;

for t = frames: numFrames
   currFrame = read(mov, t);    %reading individual frames
   opBaseFileName = sprintf('%3.3d.png', t);
   opFullFileName = fullfile(opFolder, opBaseFileName);
   imwrite(currFrame, opFullFileName, 'png');   %saving as 'png' file
   progIndication = sprintf('Wrote frame %4d of %d.', t, numFrames);
   disp(progIndication);
   numFramesWritten = numFramesWritten + 1;
end

【问题讨论】:

  • 你已经有什么代码了?你的文本文件是什么格式的?
  • 我要修改的代码是一个 for 循环,它将每一帧提取为 png 文件。我将把它添加到我上面的问题的正文中。文本文档只是一列数字。我可以让提取物从文本文档中的第一个数字开始,但它只是增加一个。我不确定如何正确计算这些数字。

标签: matlab image-processing video-processing


【解决方案1】:

如果我正确理解您的问题:

...如何读取存储在此文本中的帧号 文档并仅将这些帧提取为 png 文件?

假设'frames'是一个包含你想要的帧的索引子集的向量,那么你需要做的就是改变for循环

for t = frames

【讨论】:

  • 尝试此操作时出现以下错误:“帧范围必须是帧索引的 1x2 向量,第一个值小于或等于第二个值。帧索引必须是数值大于零且小于或等于文件中的帧数。”帧是双类,在Matlab中检查时,这是问题吗?谢谢。
  • 当我尝试阅读视频时会发生这种情况。 currFrame = read(mov, t);
  • 你可以试试转置 t 吗?对于 t = 帧'
  • 现在可以完美运行,而且非常简单!非常感谢!
猜你喜欢
  • 2021-05-05
  • 1970-01-01
  • 2011-04-04
  • 2016-01-23
  • 2016-04-19
  • 2019-01-09
  • 1970-01-01
  • 2021-05-05
相关资源
最近更新 更多