3D matrix to Video
    38 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Andrew Chen
      
 el 24 de Feb. de 2017
  
    
    
    
    
    Comentada: Guangxu Li
 el 9 de Mayo de 2020
            Hello all, I have been having a lot of trouble trying to export a video from Matlab from a 3D matrix. The matrix dimensions indicate frame height, width and frame number. The element values are what is being used to form images with commands such as imagesc or imshow. I can create a video in Matlab by putting the imshow or imagesc command in a for loop but I want to extract something equivalent from Matlab to put in youtube or imbed in a powerpoint or soemthing. Here's an example of the situation:
IM % an mxnxz matrix
for i = 1:size(IM,3);
    imshow(IM(:,:,i))
    pause(.001);
end
Since the matrix has no color information after processing I have run into problems using WriteVideo or im2frame command. Thanks for any help.
0 comentarios
Respuesta aceptada
  Stephen23
      
      
 el 24 de Feb. de 2017
        
      Editada: Stephen23
      
      
 el 24 de Feb. de 2017
  
      It is easy to use getframe and videoWriter object. Here is an example from the videoWriter object help:
v = VideoWriter('peaks.avi');
open(v);
Generate initial data and set axes and figure properties.
Z = peaks;
surf(Z); 
axis tight manual 
set(gca,'nextplot','replacechildren');
Create a set of frames and write each frame to the file.
for k = 1:20 
   surf(sin(2*pi*k/20)*Z,Z)
   frame = getframe;
   writeVideo(v,frame);
end
close(v);
3 comentarios
Más respuestas (1)
  Guangxu Li
 el 9 de Mzo. de 2020
        
      Editada: Guangxu Li
 el 9 de Mayo de 2020
  
      Video to 3D image (single channel)
    filename="./*.avi";
    obj = VideoReader(filename);
    vid = read(obj);
    mImage=obj.Width;  
    nImage=obj.Height;
    frames = obj.NumberOfFrames;
    Image3D=zeros(nImage,mImage,frames,'uint8');
    for x = 1 : frames
        Image3D(:,:,x)=vid(:,:,1,x);
    end
    niftiwrite(Image3D,filename);
2 comentarios
  Melika Bahmanabasdi
      
 el 6 de Mayo de 2020
				Hi Guangxu Li ,
Thankyou for your answer. I have a question. Why we should use rote90 in Image3D=rot90(Image3D); ?
I can`t understand the reason.
many thanks
  Guangxu Li
 el 9 de Mayo de 2020
				Dear Bahmanabasdi,
I am very sorry. Please ignore the rotation and flipud lines. That is for my case.
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



