使用MATLAB将面部图像读入数组

时间:2015-04-17 10:58:48

标签: matlab

我目前有一个使用MATLAB的程序,我们必须对文件夹Training_images和Testing_images中的图像进行人脸识别。我编写了代码来将这些图像转换为matlab数据库:

function database = buildImagesDataBase(directory, Imageprefix, extension, maxN, namesFile)
    database = initDB(maxN);
    names = readImgInfo([directory namesFile]);
    for i=1:1:maxN
        imgFileName = [directory, Imageprefix, num2str(i), '.', extension];
        database(i).name = names{i};
        database(i).rgb = imread(imgFileName);  
        if ( length(size(database(i).rgb)) == 3)
            database(i).gray = rgb2gray(database(i).rgb);        
else
            database(i).gray = database(i).rgb;        
        end;
        database(i).grayCrop = cropHead(database(i).gray);
        database(i).grayResize = imresize(database(i).grayCrop, [84 64]);   
        database(i).dataVect = database(i).grayResize(:);
end 

然后,当我运行代码时,它将类似于:

>>dbWink = buildImagesDB('Testing\', 'person', 'wink.gif', 10, 'names.txt');

但是我需要修改代码,因此它不需要.txt文件来获取名称,而是从每个单独的文件名中动态获取它,例如。 Steven_happy,Michael_happy等,所以根据我的理解,这意味着'主题'字段也需要更改,以便文件名不固定主题前缀即。 person1.wink 我不确定如何使用MATLAB做到这一点,所以任何帮助将不胜感激。 谢谢, 标记

1 个答案:

答案 0 :(得分:0)

您应该查看以下Matlab命令

  • dir:列出某个目录中的文件,例如names=dir('*.jpg');为您提供一个数组names(ii).nameii个jpg文件的文件名。<登记/>
    • [fileparts]:根据文件名,它可以将其分解为路径,名称和扩展名。