Matlab 如何从多个.png图像制作单个256*256*N(双精度).mat
有100个PNG图像,大小=256*256,通道=1 这是我的测试代码(在mat中保存2个图像的测试): ->test.mat为256X256X2双精度 但是,我想在垫子中保存100个图像。 我的想法是F1~1001~100.png,然后是cat(1,F1,F2…F100),最后保存。 所以我尝试在for循环create F1~100中使用eval()来相应地加载1~100.png 像这样:Matlab 如何从多个.png图像制作单个256*256*N(双精度).mat,matlab,for-loop,png,transform,mat,Matlab,For Loop,Png,Transform,Mat,有100个PNG图像,大小=256*256,通道=1 这是我的测试代码(在mat中保存2个图像的测试): ->test.mat为256X256X2双精度 但是,我想在垫子中保存100个图像。 我的想法是F1~1001~100.png,然后是cat(1,F1,F2…F100),最后保存。 所以我尝试在for循环create F1~100中使用eval()来相应地加载1~100.png 像这样: for i=1:100 eval(["F",num2str(c),"
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本身非常不鼓励使用它。永远不要使用它。您试图使用动态变量名(即动态创建变量)。Stackoverflow中没有足够的空间来解释这是多么可怕的想法。只需制作一个矩阵,将图像存储在第三个dim中,正如标题所示。好的,我明白了。谢谢你的提醒。我使用
F=cell(1100)
和F{I}=im2double(imread(img_name{I}))代码>和label=cat(3,F{:})代码>最后。它工作得很好。但我不知道它是否有任何缺陷或错误。
for i=1:100
F(:,:,i)=im2double(imread(img_names{i}));
end