How do I add a marker to only specific frames in a video
19 views (last 30 days)
Show older comments
Matthias Heuberger
on 20 Sep 2019
Commented: Walter Roberson
on 28 Feb 2023 at 19:35
I would like to add a visual marker with a fixed position (e.g. top right corner) to my video that is only visible at specific frames. The frames during which I want the marker to be shown are saved in a vector.
Accepted Answer
Kavya Vuriti
on 5 Dec 2019
Hi,
As you know the indices of frames to mark, you can use readFrame function to read those frames from video and then use insertMarker function to add marker to the frame at specific position. If you want to add markers to frames with indices 2, 4 and 6, your code will look something like this:
% Create object to read video
v = VideoReader('xylophone.mp4');
% Frames to which marker must be inserted
markFrames = [2 4 6];
frameidx = 0;
videoPlayer = vision.VideoPlayer;
while hasFrame(v)
% Read next video frame
frame = readFrame(v);
frameidx = frameidx + 1;
% Check if index of frame is to be marked or not
if any(ismember(markFrames, frameidx))
markedFrame = insertMarker(frame, [50 50]);
videoPlayer(markedFrame);
else
videoPlayer(frame);
end
end
Hope this helps.
5 Comments
Walter Roberson
on 28 Feb 2023 at 19:35
My understanding is that the video writing library that MATLAB uses is not the most efficient library, so you might be able to improve performance by using a C++ interface or using loadlibrary() to talk to an external library.
More Answers (0)
See Also
Categories
Find more on Audio and Video Data in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!