CreateImages (line 184) I = I(1:actual_files);

背景:Matlab、制作数据集函数 CreateImage出错

CreateImages.m的作者是

% @author Matthew Zeiler
% @date Mar 11, 2010

(嫌调试过程太长的同学拉到最下查看解决方案即可)

在调别人的开源代码时,遇到一个错误

报错的位置如下

CreateImages (line 184) I = I(1:actual_files);

出错的具体位置

CreateImages (line 184) I = I(1:actual_files);

这个错误刚开始很无解,一直以为是Demo的问题,没考虑到函数里头的错误。

查了一遍又一遍的原图路径也没发现问题所在。

于是沿着 I (大写的i)的定义逐行检查

发现 I 是来自 IMG,IMG来自与img_name,img_name来自于结构体 files

CreateImages (line 184) I = I(1:actual_files);

而这个最关键的files,来自于上上上面的语句

[~,files] = split_folders_files(subdir);

CreateImages (line 184) I = I(1:actual_files);

所以单步调试看工作空间,发现这句话里面的files其实都是空的,没读到图像。

也不知道为啥,感觉不应该出这个错误,解决也很简单,将~与files调换位置即可。

[files,~] = split_folders_files(subdir);

这样就搞掂了,可能是matlab版本的问题,也有可能是开源的作者手误,或者电脑的问题?(可能性不大)