Is there a way to overlay a graph onto a video, plotting each successive point with each frame?
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Teshan Rezel
am 27 Sep. 2021
Kommentiert: Teshan Rezel
am 5 Okt. 2021
Hi folks,
I have a script that creates a video from image files, as below:
for i = 1 : numFolders
RawImages = [vidFolders(i).folder '\' vidFolders(i).name];
videoName = [RawImages '\' vidFolders(i).name '.avi'];
addpath(RawImages);
imageFolder = [RawImages '\Images\'];
files = dir([imageFolder '*.tif']);
numImages = length(files);
if ~isfile(videoName)
writerObj = VideoWriter(videoName);
writerObj.FrameRate = 10;
open(writerObj);
for j = 1:numImages
imagePath = [imageFolder files(j).name];
image = imread(imagePath);
image = image(:,:,1:3);
frame = im2frame(image);
writeVideo(writerObj, frame);
end
close(writerObj);
end
end
Each frame of the video is a temperature increment of 1 degree. For each video created, there is a plot that describes the video, as such:
where each point along the line is a degree increment, as with each frame in the video.
My question is: can I overlay the graph onto the video, such that the plot evolves with each frame?
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 27 Sep. 2021
Bearbeitet: Walter Roberson
am 27 Sep. 2021
I recommend videofig() from the File Exchange. https://www.mathworks.com/matlabcentral/fileexchange/29544-figure-to-play-and-analyze-videos-with-custom-plots-on-top
3 Kommentare
Walter Roberson
am 4 Okt. 2021
What problems are you encountering with video_fig ? It is difficult to make recommendations that will avoid a problem that has not been defined.
Weitere Antworten (1)
yanqi liu
am 28 Sep. 2021
clc; clear all; close all;
t = linspace(0, 2*pi);
xt = cos(t);
yt = sin(t);
figure; axis([-1 1 -1 1]);
writerObj = VideoWriter('out.avi');
writerObj.FrameRate = 24;
open(writerObj);
for i =1 : 5: length(t)
plot(xt(1:i), yt(1:i), 'r-');
axis([-1 1 -1 1]);
frame = getframe(gcf);
writeVideo(writerObj, frame);
pause(1e-1);
end
plot(xt, yt, 'r-');
axis([-1 1 -1 1]);
frame = getframe(gcf);
writeVideo(writerObj, frame);
pause(1e-1);
close(writerObj);
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!