convert images to video
131 ビュー (過去 30 日間)
古いコメントを表示
hello there,
I need to make movie/video to show how the graph changes over time.
i have images named "hgate00.png" to "hgate79.png", each images have plot that keep changing slightly with each images.
i need to show how that changes through video of that 80 images.
also where should I kept that images and MATLAB file in folder so that they can work?
Thank you in advance.
0 件のコメント
回答 (3 件)
KSSV
2020 年 4 月 27 日
imgFile = dir('*.png') ;
N = length(imgFiles) ;
% create the video writer with 1 fps
writerObj = VideoWriter('myVideo.avi');
writerObj.FrameRate = 10;
% open the video writer
open(writerObj);
% write the frames to the video
for i=1:N
img = imgFiles(i).name ;
I = imread(img) ;
imshow(I) ;
F = getframe(gcf) ;
writeVideo(writerObj, F);
end
% close the writer object
close(writerObj);
8 件のコメント
Anu
2022 年 1 月 4 日
Thanks @KSSV. There is a typo in the first line of your code. It should be: imgFiles = dir('*.png')
Jaime Abad Arredondo
2023 年 12 月 13 日
I want to add something that might save some time for someone:
If you use imshow and the images are larger than your screen size, then imshow will downscale the image to fit in your screen. Therefore all the parameters of writevideo will result in (in some cases) very low video quality.
A workaround to this is to use:
F=im2frame(I);
yanqi liu
2022 年 1 月 5 日
clc; clear all; close all;
selpath = uigetdir(fullfile(pwd),'Choose image folder');
if isequal(selpath, 0)
return;
end
imgFilePath = selpath;
filename_out = fullfile(pwd, 'out.avi');
% "hgate00.png" to "hgate79.png"
startnum = 0;
endnum = 79;
% create video file
writerObj = VideoWriter(filename_out);
writerObj.FrameRate = 24;
open(writerObj);
h = waitbar(0, '', 'Name', 'Write Video File...');
steps = endnum - startnum;
for num = startnum : endnum
file = sprintf('hgate%02d.png', num);
file = fullfile(imgFilePath, file);
frame = imread(file);
frame = im2frame(frame);
writeVideo(writerObj,frame);
pause(0.01);
step = num - startnum;
waitbar(step/steps, h, sprintf('Process:%d%%', round(step/steps*100)));
end
close(writerObj);
close(h);
0 件のコメント
Christophe
2020 年 4 月 27 日
編集済み: Christophe
2020 年 4 月 27 日
First you need to read your image. Use the imread function to do so.
Then, you can use the VideoWriter object to write videofiles.
Here is an untested program. Your png files must be in the current work directory. It will output the video in the same directory.
v = VideoWriter('newfile.avi','Uncompressed AVI');
open(v)
for k = 0:79
A = imread(['hgate', num2str(k,'%02d'), '.png');
writeVideo(v,A)
end
close(v)
Please check the documentation for further explanation.
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!