我将MATLAB设置为同时记录三个网络摄像头。我想捕获并将每个Feed保存到文件中并自动将其增加文件名,它将替换为experiment_0001.avi,然后是experiment_0002.avi等。
我的代码目前看来是这样的
set(vid1,'LoggingMode','disk');
set(vid2,'LoggingMode','disk');
avi1 = VideoWriter('X:\ABC\Data Collection\Presentations\Correct\ExperimentA_002.AVI');
avi2 = VideoWriter('X:\ABC\Data Collection\Presentations\Correct\ExperimentB_002.AVI');
set(vid1,'DiskLogger',avi1);
set(vid2,'DiskLogger',avi2);
我每次都在递增002。
有关如何有效实施此方法的任何想法?
感谢。
答案 0 :(得分:0)
别忘了matlab对C编程语言有一些根源。这意味着像sprintf这样的东西会起作用
所以既然你打印出一个零填充到3个空格的整数值,你需要这样的sprintf('%03d',n)
,然后%表示有一个值可以打印不是文本。 0表示左边是零填充,3表示填充到3位,d表示数字本身是整数
只需使用sprintf代替字符串。 s表示 S 打印格式化。所以它会输出一个字符串。这里是你可能会做什么的想法
set(vid1,'LoggingMode','disk');
set(vid2,'LoggingMode','disk');
for (n=1:2:max_num_captures)
avi1 = VideoWriter(sprintf('X:\ABC\Data Collection\Presentations\Correct\ExperimentA_%03d.AVI',n));
avi2 = VideoWriter(sprintf('X:\ABC\Data Collection\Presentations\Correct\ExperimentB_002.AVI',n));
set(vid1,'DiskLogger',avi1);
set(vid2,'DiskLogger',avi2);
end