如何使用 matlab 从 yuv 420 视频剪辑中提取帧并将它们存储为不同的图像?
如何从 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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是来自 MathWorks File Exchange 的提交,它应该可以满足您的要求:
函数
loadFileYuv 将加载 YUV 文件并返回电影帧数组。每个电影帧都是一个具有以下字段的结构:
cdata
:uint8
值的矩阵。尺寸为高 x 宽 x 3。colormap
:N×3 双精度矩阵。在真彩色系统上它是空的。因此,您可以从数组中的每个影片帧中提取
cdata
字段,并将其保存/用作 RGB 图像。您的代码可能如下所示:
Here's a submission from the MathWorks File Exchange that should do what you want:
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
: A matrix ofuint8
values. The dimensions are height-by-width-by-3.colormap
: An N-by-3 matrix of doubles. It is empty on true color systems.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:
抱歉无法帮助您使用 matlab,但在命令行上您可以使用 ffmpeg
-r 1 表示速率 = 每帧
sorry can't help with matlab but on the command line you can do it with ffmpeg
-r 1 means rate = every frame
您可以使用下面的代码:
您可以访问矩阵 mov1 中的每一帧:)
You can use this code below:
You can access each frame from the matrix mov1 :)