You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Matlab中使用dir获取的文件名变量作为imread的输入参数

问题核心原因

你调用imread报错主要是两个常见问题:

  • dir不带参数返回的结果包含当前目录.和上级目录..两个文件夹条目,这两个不是图像文件,传入imread必然报错
  • 如果你要读取的图像不在Matlab当前工作路径下,只传文件名images(i).name会找不到文件,需要拼接完整路径

修正方案

步骤1:指定读取目录和图像后缀过滤,排除非图像条目

调用dir时直接指定图像后缀过滤,避免拿到文件夹和其他非图像文件,比如读取jpg文件就写dir('*.jpg'),多后缀可以叠加结果,保证返回的条目全是可读取的图像文件。

步骤2:拼接完整文件路径,避免工作路径不匹配的问题

dir返回的结构体自带folder字段存储文件所在目录路径,和name字段拼接即可得到无平台兼容问题的完整路径,不会出现找不到文件的问题。

完整可运行代码

% 指定图像所在目录,当前目录填pwd(),也可写绝对路径比如'D:/test_images'
img_folder = pwd();
% 按实际图像格式调整后缀过滤规则,此处示例过滤jpg、png两种格式
images = dir(fullfile(img_folder, '*.jpg'));
images = [images; dir(fullfile(img_folder, '*.png'))];
% 直接获取有效图像文件总数
imageslength = length(images);

for i = 1:imageslength
    % 拼接完整路径作为imread入参
    img_full_path = fullfile(images(i).folder, images(i).name);
    cimg = imread(img_full_path);
    % 此处写入你原有的图像处理逻辑
    % etc etc
end

补充说明

如果你不想按后缀过滤,也可以手动剔除目录条目,在获取images后加一行代码即可:
images(ismember({images.name}, {'.', '..'})) = [];
不需要手动写5000次调用,循环处理是完全合理的方案,只要过滤掉非法条目、传入合法路径即可正常运行。

内容的提问来源于stack exchange,提问作者dalrymju

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 18:36:00