Filter löschen
Filter löschen

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

7 Ansichten (letzte 30 Tage)
naoya uwa
naoya uwa am 12 Nov. 2021
Bearbeitet: Atsushi Ueno am 30 Nov. 2021
例えば、ウェブカメラを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 Kommentar
Atsushi Ueno
Atsushi Ueno am 12 Nov. 2021
指定容量に達した事を知る手段はありますか?(環境に依存すると思います)
ディスククォータからの通知を検知する事が想定されますが、どのような環境でしょうか?

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Atsushi Ueno
Atsushi Ueno am 12 Nov. 2021
Bearbeitet: Atsushi Ueno am 30 Nov. 2021
ファイル名のリングバッファを作成し、バッファ上のファイル名を上書きする際にそのファイルが存在すれば削除する事でやりたい事が出来ます。
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 Kommentar
naoya uwa
naoya uwa am 30 Nov. 2021
Atsushi Ueno様ご回答頂きありがとうございました。
的確なご説明でエディターで確認し目的を果たせました。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte


Version

R2021a

Community Treasure Hunt

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

Start Hunting!