2010-09-01 43 views

回答

2

你可以讀取一個AVI文件到MATLAB using the built-in mmreader class

:一旦你讀入的一個電影幀結構陣列的AVI幀,你可以將它們使用來自MathWorks File Exchange在此提交發現saveFileYuv功能保存爲YUV文件你的代碼可能看起來像這樣:

%# 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

嗨gnovice。我遵循你的建議,並稱這兩個功能。我在色彩地圖上遇到了一些問題。我如何指定每個mov(k).colormap? thx – view 2010-09-01 12:27:01

+0

@yoursclark:我用一些示例代碼更新了我的答案。你不應該爲'colormap'字段指定任何東西(即將它設置爲空矩陣'[]'),因爲你將放在'cdata'字段中的幀將是RGB(例如[truecolor](http: //www.mathworks.com/access/helpdesk/help/techdoc/creating_plots/f2-10709.html#f2-12468))圖片。 – gnovice 2010-09-01 15:12:28

+0

非常感謝gnovice。你的解釋是非常明確和有益的!thx! – view 2010-09-02 05:13:34

0

我不推薦使用Matlab。你想要做什麼可以很容易地使用mplayer/mencoder完成...爲什麼使用Matlab來做到這一點?

mencoder.exe -of rawvideo clock.avi -o clock.yuv -nosound -ovc原料

您可以添加室顫swapuv交換U和V組件如果colrs是不正確的。

相關問題