如何将视频保存为.MAT文件及其名称在matlab中?

时间:2014-03-12 22:09:23

标签: matlab loops video

我有一个包含大量视频的数据集,因此,我想要阅读这些视频并使用其名称单独保存每个视频,因为每次专门用于培训和分类时,所有这些视频都需要花费大量时间进行处理。如果您有任何想法如何读取指定文件夹D:\ words格式为.avi的所有视频文件,并将每个视频文件保存为.MAT文件。 但是这段代码不起作用 感谢,,,

       files = fuf('D:\words');
       for i = 1:size(files);
       name = files{i};
       file = strcat('D:\words',name);
       x = VideoReader(file.avi); %NOT SURE FROM THIS LINE%
       v = read(x)
       name = strcat(name,'.mat');
       save(name,'v'); 
       end

2 个答案:

答案 0 :(得分:0)

您的变量file可能是字符串,而不是结构:

...
file = strcat('D:\words',name);
x = VideoReader(file);
...

或者,如果您的单元格数组中的文件没有扩展程序,则可能是这样:

...
file = strcat('D:\words',name);
x = VideoReader([file '.avi']);
...

如果您的fuf函数返回的文件不是AVI电影,那么您需要做更多的工作。

答案 1 :(得分:0)

您不需要fuf之类的附加功能来获取文件名列表。 如果所有文件都在“D:\ words”中(即不在一堆子目录中,这会使事情复杂化),您可以使用ls之类的东西来获取所有avi文件的列表。

这不是最优雅的方式(对目录进行硬编码而不使用fullfile之类的东西),但希望能够相对容易地理解正在发生的事情:

% use ls or dir to specifically match *.avi files
files = ls('D:\words\*.avi')

% note that size can return more than one value
% hence size(files,1)

for n = 1:size(files,1); 

    filename = files(n,:);  % pick one file

    % assuming this works - you might want to do some error checking
    x = VideoReader(filename);
    v = read(x);

    % now we just want the name minus the ext
    [pathstr,name,ext] = fileparts(filename);
    fout = ['D:\words\',name,'.mat'];
    save(fout,'v');

end