循环帧提取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 等的文件