有100个PNG图像,大小=256*256,通道=1这是我的测试代码(在垫子上保存2张图像的测试(:
label = {sprintf('%01d.pngn', 0:100)};
img = regexp(label{:}(1:end-1), 'n', 'split');
F1=im2double(imread(img{1}));
F2=im2double(imread(img{2}));
label=cat(1,F1,F2);`
save('test.mat', 'label')
->test.mat是256X256X2双
但是,我想在垫子上保存100个图像。我的想法是F1~100<>1~100.png,然后cat(1,F1,F2…F100(,最后保存。因此,我尝试在for循环中使用eval((创建F1~100,以相应地加载1~100.png像这样:
for i=1:100
eval(["F",num2str(c),"=",im2double(imread(img_names{c}))]);
end
但这行不通。这个问题有什么解决办法吗?
只需预先分配矩阵:
last=im2double(imread(img_names{c}))
F(:,:,length(img_names))=last;
然后循环并填充
for i=1:100
F(:,:,i)=im2double(imread(img_names{i}));
end
这只适用于大小相同的图像和灰度图像。
注意:eval是最糟糕的MATLAB函数,它被Mathworks自己强烈反对。永远不要使用它。