2017-03-01 7 views
0

キャプチャしたすべての画像をMATLABに保存する必要がありますが、一度に1つの画像を保存することができます。連続してキャプチャされたすべてのイメージをMATLABに保存する方法は?

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

MATLABで一度に撮影した画像をすべて保存する方法を知っている人は、コードを教えてください。

+1

ループを使用してください。 –

+1

ループを使用する上で、ファイル名がそれぞれの繰り返しで異なるか、または同じファイルを上書きすることになります。 – rayryeng

+0

ご返信ありがとうございます。 私は使用しましたが、必要な結果が得られません。常にシーケンスの最後のフレームを保存します。 – prithvi17

答えて

0

すでに言われているように、sprintf機能を持つループを使用して、前の画像を上書きしないでください。for次のコマンドを試してみてください:

%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'); 

次に、ムービーを読み込んでフレームを見ることができます。この例ではmovie2avi古いけどVideoWriterも、私はこのコンピュータに接続されているウェブカメラを持っていないとして再度テストされていないオプション

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

で使用しています。しかし、それはアニメーショングラフのために働く。フレームを読み取る方法はdoc readFrameを参照してください。

+0

返信ありがとう – prithvi17

関連する問題