我尝试了以下程序来读取多张图像(约300张图像)。现在,我希望在将每个图像读取到某个位置之后立即存储这些图像,其名称为g1
,g2
,g3
...是否可以在循环中执行此操作?
这是我的尝试:
for i=1:5
m=imread(['C:\Users\shree\Desktop\1\im' num2str(i) '.jpg']);
figure,imshow(m);
end
答案 0 :(得分:1)
我强烈建议您将它们存储在单元格数组中:
for k=1:5
image_path = ['C:\Users\shree\Desktop\1\im' num2str(i) '.jpg']; %// I have moved this to be on its own line as it will make debugging easier. You don't have to, but I think it's a good idea.
images_all{k} = imread(image_path);
end
通过使用eval
创建变量名称,例如g1
,g2
等,您会使用无法管理的变量来污染工作区。另外,如果它们都在一个单元格数组中,则可以很容易地将相同的函数应用于循环或cellfun
中的每一个。
例如,如果您想将它们全部转换为灰度:
images_grey = cellfun(@rgb2gray, images_all, 'UniformOutput', false);
答案 1 :(得分:0)
试试这个 -
for i=1:5
img =imread(['C:\Users\shree\Desktop\1\im' num2str(i) '.jpg']);
evalc(['g' num2str(i) '=img;']);
end
figure,imshow(g1);
figure,imshow(g2);
另一种方法可能是使用STRUCT并将这些图像存储为结构的字段。
存储为4D矩阵是另一种有效的方式,如herohuyongtao所建议的那样。
答案 2 :(得分:0)
您可以将它们全部保存到一个大矩阵中:
for i=1:5
images_all(:, :, :, i) = imread(['C:\Users\shree\Desktop\1\im' num2str(i) '.jpg'])
end
此后,所有图像都将存储在images_all
中(此处假设所有图像均为彩色图像,即3个通道)。