我正在使用 MATLAB 处理由相机创建并存储在 Windows 目录中的图像文件。我试图将反馈合并到相机的控制中,因此每次创建新图像并出现在目录中时都需要 MATLAB 处理图像。我从未创建过连续运行并等待事件发生的 MATLAB 程序。
根据我在网上阅读的内容,我的最佳选择似乎是使用计时器对象并让 MATLAB 程序重复读取目录的内容。这是一个好方法还是我可以实现其他方法?
我想知道是否有一种方法可以通过目录中文件的出现“触发”MATLAB 程序,而不是不断调查该目录的内容。我希望有,因为当目录填满时,我发现 MATLAB 中的“dir”命令真的很慢;慢到我可能无法按照我的要求快速处理图像。
作为跟进。关于如何部署这个程序有什么建议吗?我喜欢的一个想法是带有“开始”和“停止”按钮的简单 GUI。
谢谢。
最佳答案
您可以执行以下操作:
创建计时器对象,它将每 10 秒检查一次您的目录:
t = timer('TimerFcn', @mycallback, 'Period', 10.0, 'ExecutionMode', 'fixedSpacing');
您的'mycallback' 函数应如下所示:
DIR_TO_READ = 'C:\incoming-files';
DIR_TO_MOVE_PROCESSED = 'C:\processed-files';
% get list of files.
file_struct = dir(DIR_TO_READ)
% remove '.' and '..' directories
file_struct([file_struct.isdir]) = [];
for j = 1 : numel(file_struct)
current_file = file_struct(j).name;
full_filename = fullfile(DIR_TO_READ, current_file)
% add your processing of the file here
% e.g.
bla = imread(full_filename);
% now move the processed file to the processed file folder
movefile(full_filename, fullfile(DIR_TO_MOVE_PROCESSED, current_file))
end
现在你需要启动定时器对象
start(t);
你可以停止定时器对象
stop(t);
关于matlab - 使用 MATLAB 在每个实例之后实时处理文件,文件由单独的程序创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7532825/