matlab:读取mp4文件,并把逐帧保存成图片文件,文件名的编号随帧数变化

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%=====ABSTRACT=====

% translate MP4 file to images. cause the appearance of block artifact, the

% frames of mp4 file will undergo down-sampling and gaussian filter before

% saved as images

%

%=====AUTHOR:dp=====

%   

%=====DATE:151117=====

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clc

clear

close all



xyloObj = VideoReader('su35.mp4');

nFrames = xyloObj.NumberOfFrames;

vidHeight = xyloObj.Height;

vidWidth = xyloObj.Width;



for k = 1 : nFrames

    im = read(xyloObj, k);%读取第k帧,存入im中

    imwrite(im, ['original_frame',num2str(k),'.bmp'], 'bmp');%把im存储成图片,并且存储的文件名根据序号改变

end



代码如上咯

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: 在MATLAB中,可以使用`VideoReader`函数来读取YUV文件,并使用`imwrite`函数将每一帧图片保存文件。 首先,需要创建一个`VideoReader`对象,指定YUV文件的路径和格式(如420Planar、YUV422等): ```matlab videoObj = VideoReader('path/to/your/video.yuv', 'VideoFormat', 'YUV420_8'); ``` 接下来,可以使用`hasFrame`函数来检查是否还有可读的帧,然后使用`readFrame`函数读取每一帧,并使用`imwrite`函数将其保存图片文件: ```matlab frameNum = 1; while hasFrame(videoObj) frame = readFrame(videoObj); imwrite(frame, sprintf('frame_%d.jpg', frameNum)); frameNum = frameNum + 1; end ``` 在上面的代码中,`videoObj`是`VideoReader`对象,`frame`是读取到的帧数据。`imwrite`函数将传入的帧数据保存为以帧序号命名的图片文件,如`frame_1.jpg`、`frame_2.jpg`等。 要注意的是,YUV文件中每一帧的尺寸和颜色空间可能不同,因此在读取每一帧之前,需要根据文件的格式进行适当的设置。另外,需要根据实际情况调整保存图片的格式和路径。 希望这个回答对您有帮助! ### 回答2: MATLAB可以使用VideoReader函数来读取YUV文件,并使用imwrite函数将每一帧保存图片文件。 首先,需要使用VideoReader函数创建一个视频读取对象,指定输入的YUV文件名: ```matlab v = VideoReader('input.yuv'); ``` 接下来,可以使用readFrame函数读取YUV文件中的图像,并使用imwrite函数将每一帧保存图片文件。可以通过循环来读取文件中的所有帧并保存: ```matlab frameIndex = 1; % 用于追踪帧的索引 while hasFrame(v) frame = readFrame(v); % 读取下一帧图像 filename = sprintf('frame%d.jpg', frameIndex); % 根据帧索引生保存文件名 imwrite(frame, filename); % 保存图像为JPEG文件 frameIndex = frameIndex + 1; % 帧索引自增 end ``` 上述代码中,使用sprintf函数生每一帧保存文件名,命名为frame1.jpg、frame2.jpg等。imwrite函数将每一帧图像保存为JPEG文件。 最终,代码将会读取YUV文件中的每一帧图像,并将每一帧保存为以帧索引命名的图片文件
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值