フィルターのクリア

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

7 ビュー (過去 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 Center および File Exchangeファイルの操作 についてさらに検索

製品


リリース

R2021a

Community Treasure Hunt

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

Start Hunting!