我需要將所有捕獲的圖像保存在MATLAB中,但我可以一次保存一張圖片。如何在MATLAB中保存所有順序捕獲的圖像?
mycam = webcam();
img = snapshot(mycam);
imwrite(img,'img.jpg');
如果有人知道如何保存在MATLAB中一次拍攝的所有圖片,請幫我看看代碼。
我需要將所有捕獲的圖像保存在MATLAB中,但我可以一次保存一張圖片。如何在MATLAB中保存所有順序捕獲的圖像?
mycam = webcam();
img = snapshot(mycam);
imwrite(img,'img.jpg');
如果有人知道如何保存在MATLAB中一次拍攝的所有圖片,請幫我看看代碼。
正如他們已經告訴過您的,您應該使用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
您將所有捕獲的幀保存在當前文件夾中。
感謝您的回覆 – prithvi17
我會將圖像保存爲電影,然後再訪問這些幀。這是未經測試的,但它會這樣工作。
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
以讀取幀的方式
感謝您的回覆 – prithvi17
使用循環。 –
在使用循環之前,請確保每次迭代時文件名都是不同的,或者您只是要覆蓋同一個文件。 – rayryeng
謝謝你的回覆。 我用過,但沒有得到所需的結果。一直保存序列的最後一幀。 – prithvi17