データ容量に制限がある場合に古いデータから上書きする
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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
el 12 de Nov. de 2021
指定容量に達した事を知る手段はありますか?(環境に依存すると思います)
ディスククォータからの通知を検知する事が想定されますが、どのような環境でしょうか?
Respuesta aceptada
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
Más respuestas (0)
Ver también
Categorías
Más información sobre ファイルの操作 en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!