如何从yuv 420视频剪辑中提取帧并使用matlab将它们存储为不同的图像? [英] How to extract frames from yuv 420 video clip and store them as different images, using matlab?

查看:388
本文介绍了如何从yuv 420视频剪辑中提取帧并使用matlab将它们存储为不同的图像?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何从yuv 420视频中提取帧?假设我想将它们存储为静止图像。如何?

How do I extract the frames from a yuv 420 video? Let's say i want to store them as still images. How?

推荐答案

以下是来自 MathWorks文件交换应该做你想做的事情:

Here's a submission from the MathWorks File Exchange that should do what you want:

上面提交的函数 loadFileYuv 将加载YUV文件并返回一组电影帧。每个电影帧都是一个包含以下字段的结构:

The function loadFileYuv from the above submission will load a YUV file and return an array of movie frames. Each movie frame is a structure with the following fields:


  • cdata :矩阵 uint8 的值。尺寸是按宽度乘以3。

  • colormap :N-by-3矩阵的双精度。在真彩色系统上它是空的。

  • cdata: A matrix of uint8 values. The dimensions are height-by-width-by-3.
  • colormap: An N-by-3 matrix of doubles. It is empty on true color systems.

因此,你可以提取 cdata 数组中每个电影帧的字段,并将其保存/用作RGB图像。

You can therefore extract the cdata field from each movie frame in the array and save/use it as an RGB image.

您的代码可能如下所示:

Your code might look something like this:

nFrames = 115;     %# The number of frames
vidHeight = 352;   %# The image height
vidWidth = 240;    %# The image width
mov = loadFileYuv('myVideo.yuv',vidHeight,vidWidth,1:nFrames);  %# Read the file
for k = 1:nFrames  %# Loop over the movie frames
  imwrite(mov(k).cdata,['myImage' int2str(k) '.bmp']);  %# Save each frame to
                                                        %#   a bitmap image file
end

这篇关于如何从yuv 420视频剪辑中提取帧并使用matlab将它们存储为不同的图像?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆