在matlab中循环期间的imwrite错误

时间:2014-05-16 14:38:57

标签: matlab

我在Matlab中的新手,我有一个问题是保存我处理过的图像。 所以这里是执行分割,裁剪我的图像并将其保存在特定路径中的命令

Run.m

   Images_Number_Train=length(Input_Images);
   Urutan=1;
   for loop1=1:Images_Number_Train
   Images=imread(Input_Images(loop1));
   Label_Images=Label_Train(loop1);
   Sign = Crop_Sign(Images);
   Order= Save_Crop(Sign,Label_Images,Urutan);
   Urutan=Order;
   end

保存功能

   function Urutan = Save_Crop(Sign,Label_Images,Urutan)

   Output_Path = 'E:\Images\Crop\Train\';
   if ~exist(Output_Path, 'dir')
   mkdir(Output_Training_Path);
   end
   newimagename = [Output_Path 'Images_Crop_' num2str(Urutan) '.pgm'];
   imwrite(Sign,newimagename);
   Urutan=Urutan+1;
   end

我有120个图像,每次运行命令时,此程序只能读取图像直到30,然后停止..

我收到了这个错误信息:

      Error using imwrite (line 421)
      Expected DATA to be nonempty.

      Error in Save_Crop (line 24)
      imwrite(Sign,newimagename);

并且Sign变量的值将是(在图像30之后)

 val =

   Empty array: 0-by-0-by-3

任何建议,我必须做什么

1 个答案:

答案 0 :(得分:1)

看起来你实际上有一个空图像。 (它有0x0x3 == 0个元素)。

如果您认为不是这种情况,请务必仔细检查您的数据。否则,如果您只是想跳过它,请使用if语句包装部分代码:

if(~isempty(Images))
   %Do stuff
end