matlab 遍歷圖像文件夾

問題1 :主文件下有多個文件夾如何遍歷?

maindir = 'C:\Users\mimashi123\Desktop\Data';
subdir =  dir( maindir );   % 先確定子文件夾
 
for i = 1 : length( subdir )
    if( isequal( subdir( i ).name, '.' ) || ...
        isequal( subdir( i ).name, '..' ) || ...
        ~subdir( i ).isdir )   % 如果不是目錄跳過
        continue;
    end
     
    subdirpath = fullfile( maindir, subdir( i ).name, '*.BMP' );
    images = dir( subdirpath );   % 在這個子文件夾下找後綴爲jpg的文件
     
    % 遍歷每張圖片
    for j = 1 : length( images )
        imagepath = fullfile( maindir, subdir( i ).name, images( j ).name  );
      %  imgdata = imread( imagepath );   % 這裏進行你的讀取操作
    end
end


問題2:輸出一副圖像的RGB三通道值,寫入txt文檔

img = imread('Testing/input.bmp'); %只能是真彩色的bmp圖片
[m n c]=size(img);
imshow(img);
if(c==3) %RGB pic
     
    fid = fopen('rgb.txt','w');
    for i=1:m
        for j=1:n
            fprintf(fid,'%d,%d,%d\t',img(i,j,1),img(i,j,2),img(i,j,3));
        end
        fprintf(fid,'\n');  
    end
    fclose(fid);
end


問題3: 現在有一個文件夾,文件夾底下有圖片,想把每一張圖像的RGB分別寫入不同的txt文件中

file_path = 'Testing';
img_path_list = dir(fullfile(file_path,'*.bmp'));
img_num = length(img_path_list);
for i = 1: img_num
    img = imread(fullfile(file_path,img_path_list(i).name));
    [m, n, c ] = size(img);
    if(c==3) %RGB pic
    
    id = strcat('rgb',num2str(i),'.txt');    
    fid = fopen(id,'w');                                   %這兩行是寫入不同的txt文件中
    for i=1:m
        for j=1:n
            fprintf(fid,'%d,%d,%d\t',img(i,j,1),img(i,j,2),img(i,j,3));
        end
        fprintf(fid,'\n');  
    end
    fclose(fid);
    end
end


問題4 ,現在有一個文件夾,這個文件夾下有兩個文件夾都有圖片,遍歷兩個文件夾的圖片,把每一張圖像的RGB寫入不同的txt文件中:

maindir = 'C:\Users\mimashi123\Desktop\Data';
subdir =  dir( maindir );   % 先確定子文件夾
 
for i = 1 : length( subdir )
    if( isequal( subdir( i ).name, '.' ) || ...
        isequal( subdir( i ).name, '..' ) || ...
        ~subdir( i ).isdir )   % 如果不是目錄跳過
        continue;
    end
     
    subdirpath = fullfile( maindir, subdir( i ).name, '*.BMP' );
    images = dir( subdirpath );   % 在這個子文件夾下找後綴爲jpg的文件
     
    % 遍歷每張圖片
    for j = 1 : length( images )
        imagepath = fullfile( maindir, subdir( i ).name, images( j ).name  );
       img = imread( imagepath );   % 這裏進行你的讀取操作
       [m, n, c ] = size(img);
    if(c==3) %RGB pic
    
    id = strcat('rgb',num2str(i),num2str(j),'.txt');    
    fid = fopen(id,'w');
    for x=1:m
        for y=1:n
            fprintf(fid,'%d,%d,%d\t',img(x,y,1),img(x,y,2),img(x,y,3));
        end
        fprintf(fid,'\n');  
    end
    fclose(fid);
    end
    end
end

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章