【问题标题】:Saving images in a cycle循环保存图像
【发布时间】:2011-12-01 18:36:53
【问题描述】:

我想弄清楚如何在一个循环中保存多个图像。


$piece1=[1,1,1;1,1,1;1,1,1];
$piece2=[0,1,0;1,1,1;1,0,1];
$piece3=[0,0,0;0,0,0;0,0,0];

$N=3;

$for i=1:N
$    (('piece' num2str(N)),('piece' num2str(N)),'jpeg');
$end

我不能让它工作, 感谢您的帮助

【问题讨论】:

  • 不要在变量名中使用后缀。相反,如果您确实需要,请学习单元格并尝试使用它们来保存您的图像:bit.ly/vKwXC8

标签: image matlab cycle


【解决方案1】:
piece1 = [1,1,1;1,1,1;1,1,1];
piece2 = [0,1,0;1,1,1;1,0,1];
piece3 = [0,0,0;0,0,0;0,0,0];

N=3;

for i=1:N
    imwrite(eval(['piece' num2str(i)]),['piece' num2str(i) '.jpeg']);
end

【讨论】:

    【解决方案2】:

    如果“保存”是指将其保存到 jpeg 文件中,那么下面的代码就是这样做的:

    piece1=[1,1,1;1,1,1;1,1,1];
    piece2=[0,1,0;1,1,1;1,0,1];
    piece3=[0,0,0;0,0,0;0,0,0];
    
    N = 3
    
    for i=1:N
        piece = eval(sprintf('piece%d', i));
        file_name = sprintf('piece%d.jpg', i);
        imwrite(piece, file_name);
    end
    

    但总的来说,您的方法并不是在 Matlab 中编写代码的最佳方式。例如,您可以使用单元格:

    piece{1}=[1,1,1;1,1,1;1,1,1];
    piece{2}=[0,1,0;1,1,1;1,0,1];
    piece{3}=[0,0,0;0,0,0;0,0,0];
    
    for i=1:numel(piece)
        file_name = sprintf('piece%d.jpg', i);
        imwrite(piece{i}, file_name);
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-15
      • 1970-01-01
      • 2023-01-17
      • 1970-01-01
      • 1970-01-01
      • 2016-02-03
      • 2022-12-12
      • 2015-11-09
      相关资源
      最近更新 更多