2015-04-17 24 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]:給定文件名可以將其分解爲路徑,名稱和擴展名。