whe*_*rce 4 matlab real-time process
我使用MATLAB处理由相机创建并存储在Windows目录中的图像文件.我试图将反馈结合到摄像机的控制中,因此每次创建新图像并出现在目录中时都需要MATLAB处理图像.我从未创建过持续运行的MATLAB程序并等待事件发生.
从我在网上看到的,似乎我最好的选择是使用一个计时器对象并让MATLAB程序重复读取目录的内容.这是一个好方法还是我可以实现的替代方法?
我想知道是否有一种方法可以通过目录中文件的外观"触发"MATLAB程序,而不是不断地调查该目录的内容.我希望有,因为当目录填满时,我发现MATLAB中的"dir"命令非常慢; 足够慢,以至于我可能无法按照我的要求快速处理图像.
作为后续行动.有关于如何部署此程序的任何建议吗?我喜欢的一个想法是一个带有"开始"和"停止"按钮的简单GUI.
谢谢.
您可以执行以下操作:
创建计时器对象,它将每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)
| 归档时间: |
|
| 查看次数: |
4799 次 |
| 最近记录: |