2010-09-01 34 views

Répondre

2

Vous pouvez lire un fichier AVI dans MATLAB using the built-in mmreader class. Une fois que vous avez les cadres AVI lus dans un tableau de la structure des cadres de film, vous pouvez les enregistrer dans un fichier YUV en utilisant la fonction saveFileYuv trouvée dans cette présentation de la MathWorks File Exchange:

Votre code pourrait ressembler à ceci:

%# Get the video data: 

vidObj = mmreader('myVideo.avi'); %# Create a video file object 
nFrames = vidObj.NumberOfFrames; %# Get the number of frames 
vidHeight = vidObj.Height;   %# Get the image height 
vidWidth = vidObj.Width;   %# Get the image width 

%# Preallocate the structure array of movie frames: 

mov(1:nFrames) = struct('cdata',zeros(vidHeight,vidWidth,3,'uint8'),... 
         'colormap',[]); %# Note that colormap is empty! 

%# Read each video frame into the structure array: 

for k = 1:nFrames 
    mov(k).cdata = read(vidObj,k); %# Place frame k in the cdata field of mov(k) 
end 

%# Save the movie frame array as a YUV 4:2:0 file: 

saveFileYuv(mov,'myVideo.yuv',1); 
+0

salut gnovice. J'ai suivi votre suggestion et appelez les deux fonctions. J'ai eu un problème avec la palette de couleurs. Comment puis-je spécifier chaque mov (k) .colormap? thx – view

+0

@yoursclark: J'ai mis à jour ma réponse avec un exemple de code. Vous ne devriez pas avoir à spécifier quoi que ce soit pour le champ 'colormap' (c'est-à-dire juste la matrice vide' [] ') puisque les images que vous placerez dans le champ' cdata' seront RVB (par exemple [truecolor] (http: //www.mathworks.com/access/helpdesk/help/techdoc/creating_plots/f2-10709.html#f2-12468)) images. – gnovice

+0

Merci beaucoup gnovice. votre explication est très claire et utile! thx! – view

0

Je ne recommande pas d'utiliser Matlab. Ce que vous voulez faire peut facilement être fait en utilisant mplayer/mencoder ... Pourquoi utiliser Matlab pour ça?

mencoder.exe -De rawvideo clock.avi -o clock.yuv -nosound -ovc cru

Vous pouvez ajouter -vf swapuv pour échanger les composants U et V si les colrs ne sont pas correctes.