matlab中,我想把一个文件夹里的所有图片都读入,如何做

把所有图片放进一个“书”中,需要用时,一页一页的翻出来。
写了这样一段程序,可是变量image并没有内容
最新回答
酒色清浅

2024-10-01 18:57:46

这是读取两层文件夹里图片的示例。

clc;
clear;
fatherPath=['C:\Users\chen\Desktop\人脸识别\faces'];
dirs=dir(fatherPath);
dircell=struct2cell(dirs);
for i=3:length(dircell)
    subdirs=dircell(1,i);
    SonPath=[fatherPath '\' cell2mat(subdirs)];
    %SonPath=[fatherPath '\' cell2mat(subdirs) '\*.pgm'];
    dirs2=dir(SonPath);
    dircell2=struct2cell(dirs2);
    for j=3:length(dirs2)
        PictureName=dircell2(1,j);
        PicturePath=[SonPath '\' cell2mat(PictureName)];
        tempimg=imread(PicturePath);
       % imgname=[SonPath '\' cell2mat(PictureName) '.png'];
       imgname=['C:\Users\chen\Desktop\人脸识别\png\' cell2mat(PictureName) '.png'];
        imwrite(tempimg,imgname);
    end
end
追问
看不懂啊!我就一层就行了。就想把图片都存在一个数组中
追答
数据是人脸识别的图片。
dir是读取目录下所有文件的信息
struct2cell将结构体转化为元胞
cell2mat是将元胞转化为矩阵
然后拼接字符串路径
imread是读取图片
imwrite是写图片(你不用)
然后就可以了。
追问
读进那个数组里了?如果想调用一个出来,怎么调
追答
我没存,我实现的功能是赋值;可以在循环外面,定义一个大元胞数组。然后读取一个路径,就把这个路径放到元胞数组里。 需要的时候imshow就好了。
梦醒

2024-10-01 10:54:16

jpg格式图片是m*n*3的,你用image(:,:,u)=imread()去读取、存储图片内容,是不行的,要这样:image{u}=imread(),就是用元胞数组存储。