データ容量に制限があ​る場合に古いデータか​ら上書きする

조회 수: 11 (최근 30일)
naoya uwa
naoya uwa 2021년 11월 12일
편집: Atsushi Ueno 2021년 11월 30일
例えば、ウェブカメラを2台使用しそれぞれフォルダに保管した場合に、指定容量に達すると古いデータから上書きしていくような方法を教えてください。
下記は、連続する画像を保存するだけのプログラムです。
これに、古いデータから上書きもしくは、古いデータを消去し、新しいデータを保存することを考えております。
cam1 = webcam(1);
cam2 = webcam(2);
mkdir('test_data');
dir = 'test_data';
while
cap1 = snapshot(cam1);
cap2 = snapshot(cam2);
extention = '.bmp';
date = datestr(datetime, 30);
filename1 = [ dir , [date '_cam1'], extention];
filename2 = [ dir , [date '_cam2'], extention];
imwrite(cap1, filename1, 'bmp');
imwrite(cap2, filename2, 'bmp');
end
  댓글 수: 1
Atsushi Ueno
Atsushi Ueno 2021년 11월 12일
指定容量に達した事を知る手段はありますか?(環境に依存すると思います)
ディスククォータからの通知を検知する事が想定されますが、どのような環境でしょうか?

댓글을 달려면 로그인하십시오.

채택된 답변

Atsushi Ueno
Atsushi Ueno 2021년 11월 12일
편집: Atsushi Ueno 2021년 11월 30일
ファイル名のリングバッファを作成し、バッファ上のファイル名を上書きする際にそのファイルが存在すれば削除する事でやりたい事が出来ます。
RBUFF_MAX = 10; % リングバッファのサイズ
filename1 = cell(RBUFF_MAX, 1);
filename2 = cell(RBUFF_MAX, 1);
for i=1:RBUFF_MAX
filename1{i} = 'temp';
filename2{i} = 'temp';
end
cam1 = webcam(1);
cam2 = webcam(2);
mkdir('test_data');
dir = 'test_data';
rbuff_index = 1;
while 1
cap1 = snapshot(cam1);
cap2 = snapshot(cam2);
extention = '.bmp';
date = datestr(datetime, 30);
if isfile(filename1{rbuff_index})
delete(filename1{rbuff_index}); % 上書きしようとしているファイルが存在したら削除する
end
filename1{rbuff_index} = [ dir, date, '_cam1', extention]; % ファイル名を上書き
if isfile(filename2{rbuff_index})
delete(filename2{rbuff_index}); % 上書きしようとしているファイルが存在したら削除する
end
filename2{rbuff_index} = [ dir, date, '_cam2', extention]; % ファイル名を上書き
imwrite(cap1, filename1{rbuff_index}, 'bmp');
imwrite(cap2, filename2{rbuff_index}, 'bmp');
rbuff_index = rbuff_index + 1; % リングバッファのインデックスを更新。最大に達したら最初に戻る
if rbuff_index > RBUFF_MAX
rbuff_index = 1;
end
pause(1); % 同じファイル名で何度も上書きするので、1秒間待つ
end
  댓글 수: 1
naoya uwa
naoya uwa 2021년 11월 30일
Atsushi Ueno様ご回答頂きありがとうございました。
的確なご説明でエディターで確認し目的を果たせました。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 ファイルの操作에 대해 자세히 알아보기

제품


릴리스

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!