【问题标题】:How to build filenames in a nested loop如何在嵌套循环中构建文件名
【发布时间】:2019-03-26 11:31:05
【问题描述】:

我正在尝试访问 4k 图像并裁剪一些基于 ROI 的区域(在我的情况下为 4 个 ROI)并将它们存储在某个目录中。到目前为止一切正常,除了文件名的循环处理。

下面附上我的代码。我正在访问N 4k 图像,将它们裁剪并调整为我想要的分辨率。最后,当我尝试保存数据时,图像被覆盖了。

N=2;
for img = 1:N
    x = gTruth.LabelData.crack{img,1}

    for i=1:4
        Cells = x(i,1:4)

        baseFileName = theFiles(img).name;
        fullFileName = fullfile(myFolder, baseFileName);
        fprintf(1, 'Now reading %s\n', fullFileName);
        imageArray = imread(fullFileName);
        CroP = imcrop(imageArray,Cells);
        imshow(CroP);
        B = imresize(CroP,[256 256]);
        imshow(B);
        imwrite(B,strcat('C:\Users\USER\Desktop\Directory\imagefile_00',num2str(i),'.png'));
    end
end

我的问题是循环 i 运行后,它保存了 4 个图像,而对于 img,它再次保存了四个值。现在,当代码运行时,它只保存最后 4 张图像,而不是 8 张。我应该得到 i*N 的总图像数量,但我只得到 4 张,其余的都被覆盖了。

如何调整我的程序以保存所有文件?

【问题讨论】:

    标签: matlab file-io nested-loops file-handling


    【解决方案1】:
    imwrite(B,strcat('C:\Users\USER\Desktop\Directory\imagefile_00',num2str(i),'.png'));
    

    是问题所在。您使用num2str(i) 更改号码,并使用i=[1,2,3,4]。因此,您无法创建数字 1 到 4 之外的文件。如果您还想要基于 img 的内容,您可以使用例如

    imwrite(B,strcat('C:\Users\USER\Desktop\Directory\imagefile_',num2str(img),num2str(i),'.png'));
    

    这将为第一个图像和第一个区域创建一个名为 imagefile_11 的文件,为第一个图像,第二个区域创建一个名为 imagefile_12 的文件,为第 32 个图像,第四个区域等创建一个名为 imagefile_324 的文件。当然根据您的需要进行更改.

    实例:

    >> i=3;img=1;
    >> strcat('C:\Users\USER\Desktop\Directory\imagefile_',num2str(img),num2str(i),'.png')
    
    ans =
    
    C:\Users\USER\Desktop\Directory\imagefile_13.png
    
    >> i=1;img=2;
    >> strcat('C:\Users\USER\Desktop\Directory\imagefile_',num2str(img),num2str(i),'.png')
    
    ans =
    
    C:\Users\USER\Desktop\Directory\imagefile_21.png
    

    免费建议:

    • i and j are the imaginary unit。在我看来,最好不要将它们用作循环索引。

    • 您的桌面很可能不是保存内容的最佳位置。例如,在您的 Documents 文件夹中创建一个具有恰当名称的文件夹,例如C:\Users\USER\Documents\ROIfrom4k\

    • xCells 的声明将受益于行上的结束分号,以防止它们输出到控制台,从而减慢程序并阻塞命令窗口。 MATLAB 放在那里的橙色摆动不是为了庆祝,它们提出了一个有用的警告。 (不要与红色摆动混淆,它们会出现严重错误,因此 MATLAB 根本无法运行。)

    【讨论】:

      猜你喜欢
      • 2019-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-27
      • 1970-01-01
      • 2021-11-17
      • 1970-01-01
      相关资源
      最近更新 更多