本站分享:AI、大数据、数据分析师培训认证考试,包括:Python培训Excel培训Matlab培训SPSS培训SAS培训R语言培训Hadoop培训Amos培训Stata培训Eviews培训

Matlab 提取视频的每一帧图像_Matlab培训

matlab培训 cdadata 5666℃
Matlab 提取视频的每一帧图像
关键词:matlab提取视频每一帧视频关键帧提取matlab
这里主要介绍如何在Matlab中提取视频的每一帧。
这里主要用到的函数时VideoReader,在help中有很详细的介绍
例1. Matlab中提供的实例
Matlab 提取视频的每一帧图像 
例2. 根据实例应用到自己的程序中
%% Read Video
xyloObj = VideoReader(‘MVI_1268.MOV’);
 
nFrames = xyloObj.NumberOfFrames;
vidHeight = xyloObj.Height;
vidWidth = xyloObj.Width;
 
% Preallocate movie structure.
mov(1:nFrames) = …
    struct(‘cdata’, zeros(vidHeight, vidWidth, 3, ‘uint8’),…
           ‘colormap’, []);
 
% Read one frame at a time.
for k = 1 : nFrames
    mov(k).cdata = read(xyloObj, k);
end
 
% Size a figure based on the video’s width and height.
hf = figure;
set(hf, ‘position’, [150 150 vidWidth vidHeight])
 
% Play back the movie once at the video’s frame rate.
movie(hf, mov, 1, xyloObj.FrameRate);
 
%% Analysis
% load mov
frame1 = mov(1).cdata;
frame2 = mov(2).cdata;
frame50 = mov(50).cdata;
frame60 = mov(60).cdata;
save(‘frame1.mat’, ‘frame1’);
save(‘frame2.mat’, ‘frame2’);
save(‘frame50.mat’, ‘frame50’);
save(‘frame60.mat’, ‘frame60’);
红色的几句就是提取第1, 2, 50, 60帧。若需要显示某一帧图像(比如第50帧)只需要加入这一句即可
imshow(frame50);
例3. 另一个实例
这里主要自定义了一些参数,如读取的帧数,保留的帧数, 播放帧率等
clc
clear
close all
 
创建视频读取对象,并设置参数
xyloObj VideoReader(‘20130313_11404701.avi’); 3547帧
 
nFrames xyloObj.NumberOfFrames;
vidHeight xyloObj.Height;
vidWidth xyloObj.Width;
FrameRate xyloObj.FrameRate; 24帧播放的
 
创建几帧数据的空间
frames 101:110;
mov(1:length(frames)) struct(‘cdata’, zeros(vidHeight, vidWidth, 3, ‘uint8’), ‘colormap’, []);
 
读数据
for length(frames)
    mov(k).cdata read(xyloObj, frames(k));
end
 
基于video的分辨率创建figure
hf figure;
set(hf, ‘position’, [150 150 vidWidth vidHeight])
 
播放视频
movie(hf, mov, 1, 10); 在hf中以xyloObj.FrameRate帧率播放mov,播放1次
 
保存数据
save Frame101-110 mov vidHeight vidWidth

转载请注明:数据分析 » Matlab 提取视频的每一帧图像_Matlab培训

喜欢 (1)or分享 (0)