Matlab中基于CNN的GTSDB交通标志检测图像Resize问题求助
问题解决:Matlab CNN交通标志检测图像尺寸与通道不匹配报错
核心问题分析
报错信息The training images are of size 30×29×3 but the input layer expects images of size 28×28×1明确指出两个关键不匹配:
- 尺寸不符:训练图像是30×29,但CNN输入层要求28×28
- 通道不符:训练图像是3通道彩色图(×3),但输入层要求单通道灰度图(×1)
你当前的resize代码将图像改为240×240,完全不符合输入层要求,这是报错的根本原因。
修正后的批量处理代码
folderName = 'Test_rm'; srcDir = fullfile(folderName); % 修正路径拼接逻辑,避免出现无效路径 srcFiles = dir(fullfile(srcDir, '*.jpeg')); for i = 1:length(srcFiles) % 正确拼接图像文件路径 filename = fullfile(srcDir, srcFiles(i).name); im = imread(filename); % 1. 将彩色图转为单通道灰度图 if size(im,3) == 3 im = rgb2gray(im); end % 2. 将图像尺寸调整为输入层要求的28×28 k = imresize(im, [28 28]); % 保存处理后的图像,添加前缀避免覆盖原始数据 newfilename = fullfile(srcDir, ['processed_', srcFiles(i).name]); imwrite(k, newfilename, 'jpeg'); end
额外注意事项
- 不要直接覆盖原始图像:代码中添加
processed_前缀,防止误删未处理的原始数据 - 同步输入层配置:如果后续修改CNN输入层的尺寸或通道要求,需同步调整代码中的对应参数
- 检查图像格式:确保目标文件夹中只有
.jpeg格式图像,避免循环中出现读取错误
内容的提问来源于stack exchange,提问作者Iuliana
相关产品推荐
相关产品推荐

