Matlab - Crear video mp4 desde una secuencia de imagenes

 
Vista:
sin imagen de perfil
Val: 3
Ha aumentado su posición en 9 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Crear video mp4 desde una secuencia de imagenes

Publicado por Jorge Lopez (24 intervenciones) el 23/11/2015 20:44:13
Compañeros tengo una secuencia de imagenes las cuales debo convertir a un video en extension mp4, por favor si alguien me puede colaborar con el tema le agradeceria.

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Royeth
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Crear video mp4 desde una secuencia de imagenes

Publicado por Royeth (1818 intervenciones) el 24/11/2015 04:51:17
aquí te adjunto un ejemplo en el que creo imágenes aleatorias para que veas la forma de crearlo :
1
2
3
4
5
6
v = VideoWriter('newfile.mp4','MPEG-4');
open(v)
for ii = 1:2000
     writeVideo(v,rand(64,64))
end
close(v)

en tu casa el for sería desde 1 hasta la longitud de tu secuencia y en donde va rand iría tu imagen ya cargada en algúna variable o la puedes cargar ahí mismo

espero te sea de ayuda
https://www.facebook.com/royethmatlab/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 3
Ha aumentado su posición en 9 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Crear video mp4 desde una secuencia de imagenes

Publicado por Jorge (24 intervenciones) el 24/11/2015 22:34:23
Muchas gracias Jesus por tu ayuda, voy a abusar un poco mas de tus conocimientos ya que ahora tengo el siguiente problema, la secuencia de imagenes la tengo de la siguiente manera:

frame01.bmp
frame02.bmp
frame03.bmp
frame04.bmp
.
.
.
frame10.bmp
.
.
.
frame20.bmp

pero cuando voy a crear el video, automaticamente el programa me las organiza tomando como prioridad el numero en el nombre, osea asi:

'frame.010.bmp'
'frame.011.bmp'
'frame.012.bmp'
'frame.013.bmp'
'frame.014.bmp'
'frame.015.bmp'
'frame.016.bmp'
'frame.017.bmp'
'frame.018.bmp'
'frame.019.bmp'
'frame.02.bmp'
'frame.020.bmp'
'frame.021.bmp'
'frame.022.bmp'
'frame.023.bmp'
'frame.024.bmp'
'frame.03.bmp'
'frame.04.bmp'
'frame.05.bmp'
'frame.06.bmp'
'frame.07.bmp'
'frame.08.bmp'
'frame.09.bmp'

conoces alguna manera para que tome las imagenes de forma correcta empezando desde frame01.bmp hasta el final.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Crear video mp4 desde una secuencia de imagenes

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 25/11/2015 01:42:12
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
>> for i = 1:20
     if i<=9
        disp(['frame0',num2str(i),'.bmp'])
     else
       disp(['frame',num2str(i),'.bmp'])
     end
end
frame01.bmp
frame02.bmp
frame03.bmp
frame04.bmp
frame05.bmp
frame06.bmp
frame07.bmp
frame08.bmp
frame09.bmp
frame10.bmp
frame11.bmp
frame12.bmp
frame13.bmp
frame14.bmp
frame15.bmp
frame16.bmp
frame17.bmp
frame18.bmp
frame19.bmp
frame20.bmp



Saludos
JOSE JEREMÍAS CABALLERO
Asesoría online en Matlab
Servicios de programación matlab
[email protected]
Estimado Usuario, el correo es para servicios de: cursos, asesorías y servicios de programación en Matlab.
Toda ayuda gratuita es vía foro


http://matlabcaballero.blogspot.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Royeth
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Crear video mp4 desde una secuencia de imagenes

Publicado por Royeth (1818 intervenciones) el 25/11/2015 19:04:11
guarda tus datos así :

1
datos=strcat('frame.0',cellfun(@num2str,num2cell(1:24),'UniformOutput',false),'.bmp')

y ya los tienes en orden para acceder a uno de ellos usas datos{1} etc


saludos

https://www.facebook.com/royethmatlab/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 3
Ha aumentado su posición en 9 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Crear video mp4 desde una secuencia de imagenes

Publicado por Jorge (24 intervenciones) el 26/11/2015 15:02:00
no se que estoy haciendo mal, este es el codigo original esta parte funciona:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
for img = FrameAle+1:CantFrames;
%Ciclo para obtener los frames posteriores al frame seleccionado
	filename=strcat('frame0',num2str(img),'.bmp')
	%Almacena frame a frame en la variable filename y la cual le da el nombre de frame#.jpg
	FramePost = read(Video, img);
	%Obtiene la imagen correspondiente del frame seleccionado
	waitbar(img/(CantFrames),BarraProgreso2);
	%Muestra el avance en la barra de progreso
	RutaGuardadoFrame=('RutadeGuardado');
	%Selecciona la ubicacion donde se guardaran los frame
	filename=fullfile(RutaGuardadoFrame,filename);
	%Se almacena el nombre del frame y la ruta en la que se quiere guardar
	imwrite(FramePost,filename);
	%Se escribe en disco duro el frame en la ruta seleccionada.
end
close(BarraProgreso2)
%cierra la barra de progreso cuando halla terminado

cuando coloco el codigo q me pasaste modificado para lo que lo necesito no es capaz en el imwrite dice que no existe nombre, les agradezco si me pueden ayudar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Crear video mp4 desde una secuencia de imagenes

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 26/11/2015 15:08:03
Creo deberías subir código completo para ver en que parte se tiene que modificar. Porque hay variables en la parte que subes que no están especificados. Es como adivinar que es lo quieres hacer, entonces vas a recibir respuestas no tan concluyente a tus preguntas.



Saludos
JOSE JEREMÍAS CABALLERO
Asesoría online en Matlab
Servicios de programación matlab
[email protected]
Estimado Usuario, el correo es para servicios de: cursos, asesorías y servicios de programación en Matlab.
Toda ayuda gratuita es vía foro


http://matlabcaballero.blogspot.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 3
Ha aumentado su posición en 9 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Crear video mp4 desde una secuencia de imagenes

Publicado por Jorge (24 intervenciones) el 27/11/2015 20:55:46
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
function boton_Callback(hObject, eventdata, handles)
[handles.filename, handles.pathname] = uigetfile({'*.mp4'},'Seleccione Video');
a= fullfile(handles.pathname,handles.filename);
[~,~,fileExt] = fileparts(a);
%La funcion fileparts retorna parametros de la configuracion del video, en este caso nos interesa que se extension sea mp4
if fileExt == '.mp4'
    Reproducir = handles.activex1;
    Reproducir.URL = fullfile(handles.pathname,handles.filename);
    Video=VideoReader(Reproducir.URL);
    CantFrames= Video.NumberOfFrames;
    %Obtiene los frames totales del video
    FrameAle=randi([1,CantFrames])
    %Selecciona un frame aleatorio entre 1 y la cantidad de frame
    FrameSelec = read(Video, FrameAle);
    %Obtiene la imagen correspondiente al frame seleccionado anteriormente
    axes(handles.axes1)
    %Selecciona el axes1 donde se mostrara el frame (en la version final de eliminara este paso)
    imshow(FrameSelec);
    %muestra el frame seleccionado en el axes1
    fullname = 'RutaGuardado';
    %Establece la ruta en la cual se van a guardar y organizar los frames del video
    mkdir(fullname)
    BarraProgreso2 = waitbar(0,'Procesando....');
    %inicia la barra de progreso
 
        for img = 1:CantFrames;
        %Ciclo para obtener los frames posteriores al frame en el cual se va a guardar la informacion en texto
            filename=strcat(num2str(img),'.bmp');
            %Almacena frame a frame en la variable filename y la cual le da el nombre de frame#.jpg
            FramePost = read(Video, img);
            %Obtiene la imagen correspondiente del frame seleccionado
            VectorPost=[filename];
            waitbar(img/(CantFrames),BarraProgreso2);
            %Muestra el avance en la barra de progreso
            RutaGuardadoFrame=('D:\PRY-GRD\ExtractFrame\Frames');
            %Selecciona la ubicacion donde se guardaran los frame
            filename=fullfile(RutaGuardadoFrame,filename);
            %Se almacena el nombre del frame y la ruta en la que se quiere guardar
            imwrite(FramePost,filename);
            %Se escribe en disco duro el frame en la ruta seleccionada.
        end
        close(BarraProgreso2) %cierra la barra de progreso cuando halla terminado
 
end

El resultado del codigo esta en la imagen adjunta Frames.rar, posterior a eso hago un procesamiendo con una imagen, pero cuando voy a reconstruir el video al momento de leer las imagenes matlab las ordena como se puede apreciar en el archivo Frame1.rar lo cual no me sirve por que no llevan la secuencia original, necesito que me las tome segun se guardaron en la carpeta 1 2 3 4 .... n, he intentado de varias formas pero hasta el momento no lo logro les agradezco si me colaboran con el tema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 3
Ha aumentado su posición en 9 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Crear video mp4 desde una secuencia de imagenes

Publicado por Jorge (24 intervenciones) el 03/12/2015 14:35:29
Luego de revisar una gran documentacion en internet he podido solucionar el tema, lo adjunto ya que en un futuro puede ser que alguien tenga la misma duda y le pueda servir.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
% Programa para crear un video apartir de una secuencia de imagenes guardadas en un   
% directorio con cualquier extension, nombradas de la siguiente manera 1.ext 2.ext ....   
% 10.ext 20.ext 30.ext ...100.ext 200.ext ......
 
clear all
clc
Directorio = 'Ruta de guardado de frames';
Frames = dir(fullfile(Directorio, '*.extension'));
Nombres={Frames.name};
[~,name]=sort_nat(Nombres);
%sort_nat es una funcion que se debe descargar y guardar la cual ordena alfanumericamente las palabras incluyendo caracteres especiales.
new_folder=Frames(name);
NumFrames = numel(Frames);
VideoRecuperado = VideoWriter('StegoVideo.mp4','MPEG-4');
VideoRecuperado.FrameRate = FramesRate deseado;
VideoRecuperado.Quality   = 80;
open(VideoRecuperado);
for n = 1:NumFrames
    full_name= fullfile(Directorio, new_folder(n).name);
    I=imread(full_name);
    writeVideo(VideoRecuperado, I);
end
close(VideoRecuperado);

para mirar los perfiles que matlab acepta para crear videos revisar la siguiente pagina http://www.mathworks.com/help/matlab/ref/videowriter.html?refresh=true seccion profile
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Crear video mp4 desde una secuencia de imagenes

Publicado por Jorge (1 intervención) el 02/02/2019 02:32:43
Muchas gracias me sirvió mucho el programa
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar