2017-03-01 74 views
0

我需要將所有捕獲的圖像保存在MATLAB中,但我可以一次保存一張圖片。如何在MATLAB中保存所有順序捕獲的圖像?

mycam = webcam(); 
img = snapshot(mycam); 
imwrite(img,'img.jpg'); 

如果有人知道如何保存在MATLAB中一次拍攝的所有圖片,請幫我看看代碼。

+1

使用循環。 –

+1

在使用循環之前,請確保每次迭代時文件名都是不同的,或者您只是要覆蓋同一個文件。 – rayryeng

+0

謝謝你的回覆。 我用過,但沒有得到所需的結果。一直保存序列的最後一幀。 – prithvi17

回答

0

正如他們已經告訴過您的,您應該使用for循環與sprintf函數,以便不覆蓋以前的圖像。嘗試使用以下命令:

%capture the frames 
    for i =1:n;% n is the number of frames you want to capture 
     frames{i} = getsnapshot(mycam); 
    end 
    %save in the current folder 
    for i = 1:n; 
     imwrite(frames{i}, sprintf('imageName%d.jpg',i)) 
    end 

您將所有捕獲的幀保存在當前文件夾中。

+0

感謝您的回覆 – prithvi17

0

我會將圖像保存爲電影,然後再訪問這些幀。這是未經測試的,但它會這樣工作。

mycam = webcam(); 
% if you know the number of images use that here 
% a movie is just a collection of frames 
% if not then just don't initialize F 
F(nFrames) = struct('cdata', [], 'colormap, []); 
for i = 1:nFrames 
    F(i) = im2frame(snapshot(mycam)); 
end 
% save F 
movie2avi(F, 'MyMovie.avi', 'compression', 'None'); 

然後,你可以加載電影,看看幀。本例使用舊的movie2aviVideoWriter也是一種選擇

v = VideoWriter('MyMovie.avi'); 
open(v); 
for i = 1:nFrames 
    writeVideo(v, snapshot(mycam)); 
end 
close(v); 

同樣未經檢驗的,因爲我沒有連接到此計算機的網絡攝像頭。但它適用於動畫圖形。請參閱doc readFrame以讀取幀的方式

+0

感謝您的回覆 – prithvi17