How read frames within specified time interval exactly from video?

10 vues (au cours des 30 derniers jours)
Ian Wilson
Ian Wilson le 6 Fév 2018
Hi, everyone.
In Matlab R2017b, I tried to read video frames within specified time interval in this URL ->(https://jp.mathworks.com/help/matlab/import_export/read-video-files.html?searchHighlight=CurrentTime&s_tid=doc_srchtitle)
However, I could not read frames in exact time. When I tried this, extracted frames is always misaligned about 15 frames from the original video.
Are there any ideas for solving this problem or another way to read frames?
  5 commentaires
Tohru Kikawada
Tohru Kikawada le 13 Fév 2018
Modifié(e) : Tohru Kikawada le 14 Fév 2018
The code you shared works on my end. Could you please clarify the problem you are facing? Otherwise, it might be a problem depending on the codec which is installed on your end.
vidObj = VideoReader('xylophone.mp4');
s = struct('cdata',zeros(vidObj.Height,vidObj.Width,3,'uint8'),...
'colormap',[]);
k = 1;
currAxes = axes;
while hasFrame(vidObj)
% Acquire the current time
t = vidObj.CurrentTime;
% Acquire the video frame
vidFrame = readFrame(vidObj);
% Needs Computer Vision System Toolbox
vidFrame = insertText(vidFrame,[0 0],num2str(t,'time:% f'),'FontSize',40);
% Capture the video frames at the specified duration
if 0.6 <= t && t <= 0.9
s(k).cdata = vidFrame;
k = k+1;
end
% Show the video frame slowly
image(vidFrame, 'Parent', currAxes);
currAxes.Visible = 'off';
drawnow limitrate;
pause(1/vidObj.FrameRate);
end
% Display the captured results
frames = cat(4,s.cdata);
figure, montage(frames);
Anna Karchevskaya
Anna Karchevskaya le 21 Sep 2020
Modifié(e) : Anna Karchevskaya le 22 Sep 2020
Good day, I used the same code on my video, but I have two questions:
1) Is it possible to reduce numer of frames? I want to get frames for every 150 ms for a specific period of time. I mean, I got the idea, how to do it:
But I cant understand how to implement this code into your?
2) How can I export these frames one by one (for a specific period of time), so I won't get the "montage" - picture in the end. I mean, what should be written in the code in this case?
Thank you

Connectez-vous pour commenter.

Réponses (0)

Community Treasure Hunt

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

Start Hunting!