2015-04-17 45 views
0

我目前有一个使用MATLAB的程序,我们必须对文件夹Training_images和Testing_images中的图像执行人脸识别。我写的代码做把这些图像插入MATLAB数据库:使用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做到这一点,所以任何帮助将不胜感激。 谢谢, 马克

回答

0

你应该看看下面的命令Matlab的

  • dir:列出文件在某个目录,例如names=dir('*.jpg');为您提供了names(ii).name一个数组的第ii的文件名jpg文件。
    • [fileparts]:给定文件名可以将其分解为路径,名称和扩展名。