2012-12-05 29 views
2

我試圖在一個循環內將圖像寫入AVI文件。現在,我正在使用VideoWriter和getframe來實現這一目標。該代碼通常是這樣的:在Matlab中,將圖像寫入AVI而不顯示使用VideoWriter

FoodVideo = VideoWriter('tempp.avi'); 
FoodVideo.FrameRate = 25; 
open(FoodVideo); 
hh=figure('Visible','off'); 
for i=1:20 
    imshow(example_image{i}); 
    hold on; 
    text(100,100,sprintf('Frame Number: %d',i)); 
    hold off; 
    currFrame = getframe(hh); 
    writeVideo(FoodVideo,currFrame); 
end 
close(FoodVideo); 

的問題是,寫的getFrame之前顯示圖像。 我想不出一種將文本合併到圖像數據的方式,所以我消除了處理此問題的方式(使用im2frame ...)。 我知道我可以使用avifile和addframe,但我想使用VideoWriter,因爲matlab說avifile將被刪除... 有沒有什麼方法可以使用VideoWriter寫入圖像而不先顯示?

另一個相關的問題: 當我運行我的代碼時,它好像捕獲我的屏幕而不是圖;我最近換了一臺電腦,而且這種情況只發生在新電腦上。有沒有人有一個線索,爲什麼這可能是?

感謝, Aviram

回答

4

我設法找到一個解決方案後,一些搜索。我正在使用硬拷貝功能將文本合併到圖像數據中,然後使用im2frame我可以將其更改爲適合VideoWriter使用的格式。這似乎很好地工作:

 orig_mode = get(hfig, 'PaperPositionMode'); 
     set(hfig, 'PaperPositionMode', 'auto'); 
     cdata = hardcopy(hfig, '-Dzbuffer', '-r0'); 
     set(hfig, 'PaperPositionMode', orig_mode); 
     currFrame = im2frame(cdata); 
1

即使這不是相對於VideoWriter回答你的問題,也許是幫助。

使用matlab創建視頻時,我通常會導出一系列jpeg或png。我甚至沒有在matlab中觸摸視頻功能。然後,我使用MEncoder(它是MPlayer項目的一部分)將圖像系列轉換爲視頻。通過這樣做,你可以規避很多與matlab相關的問題並獲得更好的視頻文件。

相關問題