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

8 visualizaciones (últimos 30 días)
naoya uwa
naoya uwa el 12 de Nov. de 2021
Editada: Atsushi Ueno el 30 de Nov. de 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 comentario
Atsushi Ueno
Atsushi Ueno el 12 de Nov. de 2021
指定容量に達した事を知る手段はありますか?(環境に依存すると思います)
ディスククォータからの通知を検知する事が想定されますが、どのような環境でしょうか?

Iniciar sesión para comentar.

Respuesta aceptada

Atsushi Ueno
Atsushi Ueno el 12 de Nov. de 2021
Editada: Atsushi Ueno el 30 de Nov. de 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 comentario
naoya uwa
naoya uwa el 30 de Nov. de 2021
Atsushi Ueno様ご回答頂きありがとうございました。
的確なご説明でエディターで確認し目的を果たせました。

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre ファイルの操作 en Help Center y File Exchange.

Productos


Versión

R2021a

Community Treasure Hunt

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

Start Hunting!