我已經編寫了一些代碼,用於導入視頻,並逐幀地將一些DCT係數形成圖像的特定區域,然後使用圖像輸出二進制文件(包含係數)單獨的功能。這在單獨執行時工作正常,但我試圖實現批處理版本的代碼,因爲我正在處理超過200個視頻文件。批處理視頻(Matlab) - 問題
然而,他們是一個問題,當它通過循環它每次輸出錯誤的文件。如果下一次迭代中的幀數較少,則寫入前一幀。我被告知我需要在運行之前初始化我的for循環。不過,我相信如何做到這一點,我認爲問題在於2nd for循環,但我不確定。
任何建議將不勝感激!
files = dir('Videos/*.mov');
for m = 1:numel(files);
readerobj = mmreader(files(m).name);
vidFrames = read(readerobj);
numFrames = get(readerobj, 'numberOfFrames');
% Create a MATLAB movie struct from the video frames.
for k = 1 : numFrames
mov(k).cdata = vidFrames(:,:,:,k);
mov(k).colormap = [];
end
firstFrame = mov(1).cdata;
rect = [172,225,271,143;];
numFrames = length(mov);
dctCoeff = zeros((10*10),numFrames);
for i = 1 : numFrames
frameImage = imcrop(mov(i).cdata, rect);
frameImage = rgb2gray(frameImage);
dctImage = dct2(frameImage);
dctImage = dctImage(1:10,1:10);
dctCoeff(:,i) = reshape(dctImage,1,(10*10));
end
sRate = (1/29.9701)*1e7;
[status, error] = htk_write_mfc(files(m).name, size(dctCoeff,2),sRate,4*size(dctCoeff,1),9,dctCoeff);
status
error
end
現在工作正常!感謝您的幫助! – FredBones 2012-02-10 15:00:21