matlab movie函数的用法

[filename,pathname]=uigetfile(...{'*.avi','VedioFiles(*.avi)';...'*.*','AllFiles(*.*)... [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',[]); 我想播放视频。。。出错了
展开
 我来答
佳佳_022
推荐于2017-10-01 · TA获得超过1.8万个赞
知道小有建树答主
回答量:1081
采纳率:93%
帮助的人:108万
展开全部
MATLAB
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
电影动画。
烛龙一现
推荐于2017-09-23 · TA获得超过390个赞
知道小有建树答主
回答量:85
采纳率:0%
帮助的人:114万
展开全部
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的内存没有太多,可能放不下。

文件的路径中不要包含中文,以免出错,读不了文件

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式