在每个实例之后使用MATLAB实时处理文件,文件由单独的程序创建

whe*_*rce 4 matlab real-time process

我使用MATLAB处理由相机创建并存储在Windows目录中的图像文件.我试图将反馈结合到摄像机的控制中,因此每次创建新图像并出现在目录中时都需要MATLAB处理图像.我从未创建过持续运行的MATLAB程序并等待事件发生.

从我在网上看到的,似乎我最好的选择是使用一个计时器对象并让MATLAB程序重复读取目录的内容.这是一个好方法还是我可以实现的替代方法?

我想知道是否有一种方法可以通过目录中文件的外观"触发"MATLAB程序,而不是不断地调查该目录的内容.我希望有,因为当目录填满时,我发现MATLAB中的"dir"命令非常慢; 足够慢,以至于我可能无法按照我的要求快速处理图像.

作为后续行动.有关于如何部署此程序的任何建议吗?我喜欢的一个想法是一个带有"开始"和"停止"按钮的简单GUI.

谢谢.

mem*_*elf 5

您可以执行以下操作:

创建计时器对象,它将每10秒检查一次目录:

t = timer('TimerFcn', @mycallback, 'Period', 10.0, 'ExecutionMode', 'fixedSpacing');
Run Code Online (Sandbox Code Playgroud)

你的'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       
Run Code Online (Sandbox Code Playgroud)

现在您需要启动计时器对象

start(t);
Run Code Online (Sandbox Code Playgroud)

您可以使用停止计时器对象

stop(t);
Run Code Online (Sandbox Code Playgroud)