問題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