需用imread函数加载外部图像:一、绝对路径读取;二、相对路径读取;三、uigetfile交互选择;四、dir批量读取;五、exist/imfinfo排查读取失败。
如果您在MATLAB中需要将外部图像文件加载为数值矩阵以便后续处理,则需使用imread函数读取图像数据。以下是实现该操作的多种方法:
一、使用绝对路径直接读取图像
通过指定图像文件在计算机中的完整路径,可确保MATLAB准确找到并加载目标图像,适用于路径固定或脚本部署环境明确的场景。
1、在命令行或脚本中输入:
img = imread('C:\Users\Name\Pictures\sample.jpg');
2、确认图像已成功载入:输入
size(img)查看返回的维度信息(如三维数组表示RGB图像)。
3、使用
imshow(img)显示图像以验证读取结果。
二、使用相对路径配合当前工作目录读取
当图像文件位于MATLAB当前工作目录或其子文件夹中时,可采用相对路径方式调用 imread,提升脚本可移植性。
1、通过
pwd命令确认当前工作目录位置。
2、将图像文件复制到当前目录或子文件夹(例如
./images/)。
3、执行:
img = imread('./images/photo.png');
三、交互式选择图像文件
利用图形界面引导用户手动选取图像文件,适用于调试、演示或用户自定义输入场景,避免硬编码路径错误。
1、运行:
fullFileName = uigetfile({'*.jpg;*.png;*.bmp;*.tif','Image Files'}, 'Select an image');
2、判断是否取消选择:
if isequal(fullFileName, 0), error('User selected Cancel'); end
3、读取图像:
img = imread(fullFileName);
四、批量读取同一目录下多张图像
当需对文件夹内全部图像进行统一处理时,可通过 dir 函数获取文件列表,并循环调用 imread 实现批量加载。
1、获取图像文件列表:
fileList = dir('*.jpg');
2、预分配元胞数组存储图像:
images = cell(length(fileList), 1);
3、逐个读取:
for k = 1:length(fileList), images{k} = imread(fileList(k).name); end
五、处理 imread 读取失败的常见情况
当 imread 返回空矩阵或报错时,通常源于路径错误、文件损坏、不支持格式或权限限制,需针对性排查。
1、检查文件是否存在:
exist('test.jpeg', 'file')应返回 2。
2、确认扩展名与实际格式一致(例如 .jpg 文件不可命名为 .png)。
3、尝试用
imfinfo('filename')获取图像元数据,验证MATLAB是否识别该文件。
