Calling videos from a folder in every iteration

2 次查看(过去 30 天)
clc;
clear all;
close all;
number=45;
strng=num2str(number);
Folder = 'D:\project\Fingerspelling pics\';
for k=1:length(strng)
I(k)=str2num(strng(k));
aFile = fullfile(Folder, 'I(k).mp4');
videoFReader = vision.VideoFileReader(aFile);
videoPlayer = vision.VideoPlayer;
while ~isDone(videoFReader)
frame = step(videoFReader);
step(videoPlayer,frame);
end
end
My aim is to play the 4th and 5th video from the 'Folder' described in the code above. But when I am running the code it is producing error, since there is no any folder with the name I(k) in the 'Folder'. I want that as the value of I(k) changes in every iteration, correspondingly the video should be played from the folder. For example :- Here value of I(k) will be 4 and 5 of type 'double' in corresponding iterations and I have also my files 4.mp4 and 5.mp4 saved in 'Folder'. Please tell me how I can call and play the videos from 'Folder' using I(k) values.

采纳的回答

Sindar
Sindar 2020-1-20
Putting I(k) in quotes makes Matlab read it as a char instead of a variable. It is literally looking for I(k).mp4. To use the value of I(k), simply put (note the double quotes):
aFile = fullfile(Folder, I(k) + ".mp4");
Matlab automatically converts the number in I(k) into a string for addition. (But, doesn't do the same for adding to a char like '.mp4')
But, there's actually a way to simplify your code a bit, since you can directly index into the strng char:
clc;
clear all;
close all;
number=45;
strng=num2str(number);
Folder = 'D:\project\Fingerspelling pics\';
for k=1:length(strng)
aFile = fullfile(Folder, [strng(k) '.mp4']);
videoFReader = vision.VideoFileReader(aFile);
videoPlayer = vision.VideoPlayer;
while ~isDone(videoFReader)
frame = step(videoFReader);
step(videoPlayer,frame);
end
end
Here, the addition is done by concatenating chars..

更多回答(0 个)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by