我有一个包含大量视频的数据集,因此,我想要阅读这些视频并使用其名称单独保存每个视频,因为每次专门用于培训和分类时,所有这些视频都需要花费大量时间进行处理。如果您有任何想法如何读取指定文件夹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
答案 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