Make video from images
Mostrar comentarios más antiguos
Hello !
I have about 500 pics and i'd like to make a video with. Also, i have a vector with the time each image should appear. (Img10 at tome(10))
Is it possible ?
Thank you so much, Loic.
2 comentarios
Matthew Eicholtz
el 27 de Abr. de 2016
Yes, this should be possible. Is the frame rate constant?
Riva
el 2 de Abr. de 2025
Eu também tenho interesse nesse algoritmo.. A taxa pode ser constante sim.
Respuesta aceptada
Más respuestas (5)
Matthew Eicholtz
el 27 de Abr. de 2016
Here is some basic code structure to get you started:
video = VideoWriter('yourvideo.avi'); %create the video object
open(video); %open the file for writing
for ii=1:N %where N is the number of images
I = imread('the ith image.jpg'); %read the next image
writeVideo(video,I); %write the image to file
end
close(video); %close the file
Now, this assumes constant frame rate (which can be set using the video.FrameRate property). I am not aware of any built-in functionality for handling variable frame rate. But, in theory, you could hack it by repeating image frames.
For example, if your frame rate is 1 frame per second, and the time vector is something like:
t = [0 2 3 7 ...]; %times for the 1st image, 2nd image, and so forth
Then, you will want to call 'writeVideo(video,I)' 2 times for image 1, 1 time for image 2, 4 times for image 3, etc. This will be challenging if your times are not multiples of your frame rate, so watch out for that.
6 comentarios
Shafi Ullah
el 5 de En. de 2020
I need a code for making video from image. The following code is not working...
Image Analyst
el 5 de En. de 2020
Did you look at my latest comment. That code works. Why don't you try it?
Spandana M
el 20 de Jul. de 2020
Your file is too big Image Analyst....I know maybe its very detailed and would be very efficient,but I have no time to through whole of it and undertstans and then apply T.T
Image Analyst
el 24 de Jul. de 2020
madamebig, thanks, I've fixed the link, but I'm also attaching more video creating demos here.
Nidhish Jain
el 4 de Mzo. de 2021
@Matthew Eicholtz I followed your code and I got the avi file. But the video is all black. I don't know what is happening. I can see the images in the video but somehow they are all filtered to black. Please let me know if you know anything about this.
Image Analyst
el 4 de Mzo. de 2021
Try my code instead. If that still doesn't work, then start a new question and attach 5 of your images.
Pascal Stirtzel
el 30 de En. de 2020
1 voto
Perfect, thank you very much
Vikas Arora
el 11 de Sept. de 2022
Editada: Image Analyst
el 11 de Sept. de 2022
% If your image file starts with image_1.png, image_2.png and so on ...
% and live in the current folder.
folder = pwd; % Or wherever you want.
video = VideoWriter('yourvideo.avi'); % Create the video object.
open(video); % Open the file for writing
N=601; % Where N is the separate number of PNG image files.
for k = 1 : N
I = imread(fullfile(folder, sprintf('image_%g.png', k))); % Read the next image from disk.
writeVideo(video,I); % Write the image to file.
end
close(video);
3 comentarios
atharva aalok
el 15 de Sept. de 2022
The file appears but when I play it says:
"This item is in a format we don't support."
S Ch
el 27 de Oct. de 2022
@atharva aalok Read it using Windows Media.
Image Analyst
el 28 de Oct. de 2022
@atharva aalok try a different file extension, like .mp4 or .mpg or .wmv.
AMIT SURYAVANSHI
el 15 de En. de 2024
0 votos
% Example data
imageFolder = 'path_to_your_images'; % Replace with the actual path to your image folder
imageFiles = dir(fullfile(imageFolder, '*.jpg')); % Change the extension based on your image format
numImages = length(imageFiles);
% Vector with time each image should appear (in seconds)
timeVector = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; % Adjust the timings as needed
% Create a VideoWriter object
outputVideo = VideoWriter('outputVideo.mp4', 'MPEG-4');
outputVideo.FrameRate = 1; % Adjust the frame rate as needed
open(outputVideo);
% Loop through each image and write it to the video
for i = 1:numImages
% Read the current image
currentImage = imread(fullfile(imageFolder, imageFiles(i).name));
% Write the current image to the video
writeVideo(outputVideo, currentImage);
% Pause for the specified time
pause(timeVector(i));
end
% Close the video file
close(outputVideo);
MathWorks Computer Vision Toolbox Team
el 26 de Nov. de 2024
0 votos
Please consider the MATLAB example 'Convert Between Images Sequences and Video' as an answer to this question.
Categorías
Más información sobre Video Formats and Interfaces en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!





