【问题标题】:matlab display avi in GUImatlab在GUI中显示avi
【发布时间】:2012-06-08 12:03:33
【问题描述】:

如何在我的 gui 中显示 avi 文件 (myVideo.avi)?

如果有帮助,我的 avi 视频中有 11 张图像由它们组成,我需要以无限循环的形式显示这 11 张图像(直到该图关闭)。

这是我尝试过的:

function [] = GUI_400()
   hFig = figure;
   hAxes = axes('Parent',hFig,'Units','pixels','Position',[362 242 424 359]);
   movie('myVideo.avi','Parent',hAxes);  
   set(hAxes,'Visible','on');                             

end

这是我得到的:

谢谢!

@Amro,我试过了,我得到了错误:

Undefined function or method 'VideoReader' for input arguments of type 'char'.

所以我尝试了:

obj=mmreader('loading.avi');
a=read(obj);
frames=get(obj,'numberOfFrames');
for k = 1 : frames-1
    I(k).cdata = a(:,:,:,k);
    I(k).colormap = [];
end

vid = avireader(I);
sz = [vid.Height vid.Width];
mov = read(vid, [1 vid.NumberOfFrames]);

%# prepare GUI
p = get(0,'DefaultFigurePosition');
hFig = figure('Menubar','none', 'Resize','off', ...
'Position',[p(1:2) sz(2) sz(1)]);

 %# play movie
 movv = struct('cdata',squeeze(num2cell(mov,[1 2 3])), 'colormap',[]);
 movie(hFig, movv, 999, vid.FrameRate);

但现在我得到了:

??? Initialization failed. (No combination of intermediate filters could be found to make the connection.)

Error in ==> mmreader.mmreader>mmreader.init at 423
        obj.MMReaderImpl = audiovideo.mmreader(fullName);

Error in ==> mmreader.mmreader>mmreader.mmreader at 133
        obj.init(fileName);

Error in ==> GUI_400 at 14
obj=mmreader('loading.avi');

我知道this link有解决办法

但是您能知道一个简单的解决方案吗?谢谢!

【问题讨论】:

  • 有什么问题或错误?
  • @bdecaf,我更新了我的主题。谢谢!
  • 所以没有错误?在我的 Matlab 电影版本中,不接受字符串作为第一个参数。你能和你的确认一下吗?
  • @bdecaf,我不认为电影的第一个参数有问题,matlab 没有告诉我这方面的信息,但我不确定。如果有帮助,我的 avi 视频有 11 张图像由它们组成,我需要在无限循环中显示这 11 张图像(直到该图关闭)。
  • 在我看来,您使用的是非常旧版本的 Matlab。你能确认你有哪个版本吗?

标签: matlab user-interface avi


【解决方案1】:

考虑以下示例:

%# read video frames
vid = VideoReader('xylophone.mpg');
sz = [vid.Height vid.Width];
mov = read(vid, [1 vid.NumberOfFrames]);

%# prepare GUI
p = get(0,'DefaultFigurePosition');
hFig = figure('Menubar','none', 'Resize','off', ...
    'Position',[p(1:2) sz(2) sz(1)]);

%# play movie
movv = struct('cdata',squeeze(num2cell(mov,[1 2 3])), 'colormap',[]);
movie(hFig, movv, 999, vid.FrameRate);

【讨论】:

  • 我会试试的,但现在我知道你是最棒的!谢谢!!
  • @AlonShmiel:我应该提到VideoReader 是在 R2010b 中引入的。因此,如果您使用的是旧版本,请仅对 AVI 文件使用类似的 mmreader 函数或 aviread(但您似乎自己已经弄清楚了)。至于你得到的错误,它显然是一个编解码器问题。 IMO 解决的唯一方法是安装所需的编解码器......我在 WinXP 32 位系统上,所以我不能说 64 位问题,但我总是喜欢在任何 Windows 机器上使用 K-Lite Codec Pack 我与合作
  • 谢谢,但我想要一些适用于所有 Windows 版本的东西,所以我放弃了这个话题。取而代之的是,我试图显示一个图形并更新文本的 uicontrol(通过这种方式,我将能够更新构成视频的图片。我为此开辟了一个新主题。非常感谢您的帮助! !
猜你喜欢
  • 2010-10-21
  • 1970-01-01
  • 1970-01-01
  • 2012-06-07
  • 2010-11-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-09
  • 1970-01-01
相关资源
最近更新 更多