matlab movie函数的用法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab movie函数的用法相关的知识,希望对你有一定的参考价值。
[filename,pathname] = uigetfile( ...
'*.avi','Vedio Files(*.avi)';...
'*.*','All Files(*.*)',...
'Pick an Vedio');
axes(handles.axes_src);
fpath=[pathname filename]
xyloObj=VideoReader(fpath)
nFrames = xyloObj.NumberOfFrames; % 查看video对象的属性
Height = xyloObj.Height;
Width = xyloObj.Width;
mov = zeros(Height, Width, 3, nFrames,'uint8');
mov = read(xyloObj,[1 nFrames]);
%imshow(mov(:,:,:,1)); 显示这个没有问题
movie(axes,mov,1,frate,'colormap',[]); 我想播放视频。。。出错了
movie 函数动态绘图
电影动画的好处就是,运行一次可以多次播放,甚至可以直接生成avi文件,直接独立与Matlab环境播放。这是其它三种动画制作方法所不具备的。
MATLAB中,创建电影动画的过程分为以下四步:
step1:调用moviein函数对内存进行初始化(该步骤在Matlab5.3以上均可省略),创建一个足够大的矩阵,使之能够容纳基于当前坐标轴大小的一系列指定的图形(此处称为帧)。
step2:调用getframe函数生成每个帧。该函数返回一个列矢量,利用这个矢量,就可以创建一个电影动画矩阵。
getframe函数可以捕捉动画帧,并保存到矩阵中。一般将该函数放到for循环中得到一系列的动画帧。
该函数格式有:
(1)F=gefframe,从当前图形框中得到动画帧
(2)F=gefframe(h),从图形句柄h中得到动画帧
(3)F=getframe(h,rect),从图形句柄h的指定区域rec中得到动画帧
step3:调用movie函数按照指定的速度和次数运行该电影动画。
当创建了一系列的动画帧后,可以利用movie函数播放这些动画帧。
该函数的主要格式有:
(1)movie(M),将矩阵M中的动画帧播放一次
(2)movie(M,n),将矩阵M中的动画帧播放n次
(3)movie(M,n,fps),将矩阵M中的动画帧以每秒fps帧的速度播放n次
step4:调用movie2avi函数可以将矩阵中的一系列动画帧转换成视频文件avi文件。这样,即使脱离了matlab环境都可以播放动画。
具体参见:
该方法的经典格式是:
%-----------------------------------------------
%录制电影动画
for j=1:n
%
%这里输入我们的绘图命令
%
M(j) =
getframe;
end
movie(M)
%单帧显示方法
f =
getframe(gcf);
colormap(f.colormap);
image(f.cdata);
%------------------------------------------------
此外,利用immovie函数,我们可以从多帧图像阵列中创建MATALB
电影动画。 参考技术A clear all hidden
clc
[filename,pathname] = uigetfile( ...
'*.avi','Vedio Files(*.avi)';...
'*.*','All Files(*.*)',...
'Pick an Vedio');
filePath=fullfile(pathname,filename);
readerobj=VideoReader(filePath);
StartFrame=1;
EndFrame=20;
vidFrames = read(readerobj,[StartFrame EndFrame]);
for k = 1:(EndFrame-StartFrame)
mov(k).cdata = vidFrames(:,:,:,k);
mov(k).colormap = [];
end
hf = figure;
% Resize figure based on the video's width and height
set(hf, 'position', [150 150 readerobj.Width readerobj.Height])
% Playback movie once at the video's frame rate
movie(hf, mov, 1, readerobj.FrameRate);
读入的帧数不要太多,avi格式的文件数据量太大,Matlab的内存没有太多,可能放不下。
文件的路径中不要包含中文,以免出错,读不了文件
本回答被提问者采纳以上是关于matlab movie函数的用法的主要内容,如果未能解决你的问题,请参考以下文章