2010-06-17 46 views
2

我有一個項目,可以檢測圖片中的對象,它使用反向傳播尺度共軛梯度進行訓練。我使用了10個組件進行輸入。 r,g,b,標準偏差,熵,閾值(Onsu方法),包含對比度,均勻性,相關性和能量的glcm。我手動提取它們。我有100個輸入。 50個對象,50個不是對象。它仍然很難保持手動方法。所以我想使用循環和數組。我使用2文件夾的文件對象,而不是對象。如何提取2個文件夾中的文件? 第一個文件夾:C:\ Documents and Settings \ User \ My Documents \ MATLAB \ object 第二個文件夾:C:\ Documents and Settings \ User \ My Documents \非對象紋理分析統計,檢測對象在matlab中的特徵提取

這是我的編碼。我手動寫入他們直到100.你能幫我把它們分組並循環它們嗎?


kl=imread('1.jpg'); 
g=rgb2gray(kl); 
rgb=mean(mean(kl)); 
r1=rgb(:,:,1); 
g1=rgb(:,:,2); 
b1=rgb(:,:,3); 
std1=std2(g); 
entropy1=entropy(g); 
tres=graythresh(g); 
glcm=graycomatrix(g); 
F=graycoprops(glcm,{'Contrast','Homogeneity','Correlation','Energy'}); 

我希望你能給出解決方案。請幫助我。

回答

3

如果您所有的文件被命名爲1.JPG,2.JPG,......,那麼你就可以做到以下幾點:


for i = 1:50 
    fileName = sprintf('%d.jpg', i); 
    kl = imread(fileName); 

    ... the rest of your code... 

end 
3

如果,除了使用@Dima遍歷圖像中的每個目錄的解決方案,您還想循環兩個目錄,您可以執行以下操作:

dirNames = {'C:\Documents and Settings\User\My Documents\MATLAB\object','C:\Documents and Settings\User\My Documents\non object'}; 

for directory = dirNames %# loops directly over the elements of the cell array dirNames 
    fileList = dir(fullfile(directory{1},'*.jpg')); %# list all jpgs in the directory 
    for iFile = 1:length(fileList) 
     %# read the ith file 
     kl = imread(fullfile(directory{1},fileList(iFile).name)); 

     %# do the calculations here 

    end 
end