2014-03-05 46 views
0

我正在構建一個面部識別程序並加載一大堆將用於訓練的圖像。Matlab - 名稱變量與文件名相同?

目前,我正在閱讀我的圖像使用雙循環,迭代通過文件夾中的子文件夾。

有沒有什麼辦法,因爲它迭代,圖像文件名稱可以在圖像讀取和存儲之前使用?

例如。我有一個圖像person001.jpg。你如何檢索該名稱(person001),然後閱讀圖像:person001 = imread('next iteration of loop which happens to be person001');

在此先感謝。

+0

您可以使用dir()檢索目錄的內容。 您基本上正在尋找動態變量名稱生成,因此請嘗試genvarname()。繼續這兩個功能應該是非常簡單的。 –

+0

太棒了,我必須記住這個功能。謝謝。 – Reanimation

回答

5

我強烈建議不要使用非結構化變量。首先做像「迭代所有圖像」這樣的操作是非常困難的,其次你可以用一個變量名覆蓋一個函數名的奇怪問題。相反,我會使用具有動態字段名稱或地圖的結構。帶有Map的解決方案可以提供所有可能的文件名。

動態字段名:

dirlisting=dir('.jpg'); 
for imageIX=1:numel(dirlisting) 
%cut of extension: 
[~,name,~]=fileparts(dirlisting(imageIX).name); 
allImages.(name)=imread(dirlisting(imageIX).name); 
end 

您可以allImages.person001allImages.(x)

地圖訪問一個結構圖像:

allImages=containers.Map 
dirlisting=dir('.jpg'); 
for imageIX=1:numel(dirlisting) 
%cut of extension: 
[~,name,~]=fileparts(dirlisting(imageIX).name); 
allImages(name)=imread(dirlisting(imageIX).name); 
end 

您可以使用allImages('person001')一個Map訪問圖像。使用地圖不需要剪切文件擴展名。

+0

感謝您的建議。非常感激。 – Reanimation

相關問題