循环帧提取matlab
Loop for frame extraction matlab
我目前正在尝试制作一个循环来执行相同的操作来增加视频文件。目前我的代码如下所示:
close all
clear all
clc
movFiles = dir('*.mov');
numFiles = length(movFiles);
mydata = cell(1,numFiles);
% mydata = zeros(numFiles);
for k = 1:numFiles
mydata{1,k} = VideoReader(movFiles(k).name);
end
for k=1:numFiles
figure;
video = read(mydata{k},[1 Inf]);
for img = 60:60:360;
filename=strcat('File',num2str(img),'.jpg');
b = read(mydata{k}, img);
imwrite(b,filename);
end
end
问题是帧被覆盖了,所以我需要的是一种不让这种情况发生的方法。电影文件命名为 1-200,所以我想要的文件名类似于 1framenr、2framenr。希望有人可以帮助我
问题在于您为循环内的每个帧定义文件名的方式。如果您查看以下行:
filename=strcat('File',num2str(img),'.jpg');
它只由帧数组成(img
),它会为每个视频文件重复。尝试用以下内容替换该行:
filename = ['Video_' num2str(k) '_frame_' num2str(img) '.jpg'];
这将为您提供名为 Video_1_frame_1.jpg、Video_1_frame_2.jpg 等的文件
我目前正在尝试制作一个循环来执行相同的操作来增加视频文件。目前我的代码如下所示:
close all
clear all
clc
movFiles = dir('*.mov');
numFiles = length(movFiles);
mydata = cell(1,numFiles);
% mydata = zeros(numFiles);
for k = 1:numFiles
mydata{1,k} = VideoReader(movFiles(k).name);
end
for k=1:numFiles
figure;
video = read(mydata{k},[1 Inf]);
for img = 60:60:360;
filename=strcat('File',num2str(img),'.jpg');
b = read(mydata{k}, img);
imwrite(b,filename);
end
end
问题是帧被覆盖了,所以我需要的是一种不让这种情况发生的方法。电影文件命名为 1-200,所以我想要的文件名类似于 1framenr、2framenr。希望有人可以帮助我
问题在于您为循环内的每个帧定义文件名的方式。如果您查看以下行:
filename=strcat('File',num2str(img),'.jpg');
它只由帧数组成(img
),它会为每个视频文件重复。尝试用以下内容替换该行:
filename = ['Video_' num2str(k) '_frame_' num2str(img) '.jpg'];
这将为您提供名为 Video_1_frame_1.jpg、Video_1_frame_2.jpg 等的文件