%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%说明:此程序主要是从指定的视频中读取视频,并且将视频重新写入并且播放
%%用的函数说明:
%mmreader读取视频,get获取视频信息,set设置图片的位置和大小,moive播放视频
%strcut构造结构体,read读取视频信息
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xyloObj = mmreader('traffic1.avi'); %读取视频
get(xyloObj) %获取视频信息
%%%%%%%%%%%%%%%%read函数的用法
%video = read(obj, 1); % first frame only
%video = read(obj, [1 10]); % first 10 frames
%video = read(obj, Inf); % last frame only
%video = read(obj, [50 Inf]); % frame 50 through end of file
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
lastFrame = read(xyloObj, inf); %读取最后一帧
nFrames = xyloObj.NumberOfFrames; %求取帧的数目
vidHeight = xyloObj.Height; %帧的高度240
vidWidth = xyloObj.Width ; %帧的宽带320
%Preallocate movie structure. %省略号表示换行,经过验证放到一行去对程序结果你没有影响
%构造结构体类型
mov(1:nFrames) = ...
struct('cdata', zeros(vidHeight, vidWidth, 3, 'uint8'),...
'colormap', []);
%%%%%%%%经过验证,将上述省略号删除后,对程序的结果没有影响
%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); %将xyloObj中的数据存储到mov中
end
% Size a figure based on the video's width and height.
hf = figure;
set(hf, 'position', [150 150 vidWidth vidHeight]); %position是figure窗口的位置,是[left, bottom, width, height],针对于screen左下角来做的
% Play back the movie once at the video's frame rate.
movie(hf, mov, 1, xyloObj.FrameRate);
本文深入探讨了视频处理的基本概念和技术,包括如何使用特定函数读取、获取、设置视频信息以及播放视频的方法。详细解释了`mmreader`、`get`、`set`和`movie`等关键函数的作用,并通过实例展示了如何实现这些操作。此外,文章还介绍了视频读取的不同方式,以及如何构造结构体、预分配存储空间和播放视频的具体步骤。
5913

被折叠的 条评论
为什么被折叠?



