1)我有一個名爲「Original_file
」的原始目錄,其中包含多個圖像。以下的代碼用於從目錄中讀取這些圖像,將它們轉換爲灰度,然後將它們寫入名爲「Target_File
」的新目錄中。從目錄中的文件夾中讀取圖像
Target_File='modified_images';
mkdir(Target_File);
directory='original_images';
dnames = {directory};
cI = cell(1,1);
c{1} = dir(dnames{1});
cI{1} = cell(length(c{1}),1);
for j = 1:length(c{1}),
cI{1}{j} = double(imread([dnames{1} '/' c{1}(j).name]))./255;
cI{1}{j} = rgb2gray(cI{1}{j});
imwrite(cI{1}{j}, fullfile(Target_File, ['image' num2str(j) '.jpg']));
end
2)從「TARGET_FILE」:下面的代碼用於隨機選擇圖像的具體數量和把它們放在一個培訓檔案。
Train_images='training_file';
mkdir(Train_images);
ImageFiles = dir('Target_File');
totalNumberOfFiles = length(ImageFiles)-1;
scrambledList = randperm(totalNumberOfFiles);
numberIWantToUse = 5; % for example 5
loop_counter = 1;
for index = scrambledList(1 :numberIWantToUse)
baseFileName = ImageFiles(index).name
str = fullfile('Target_File', baseFileName);
image = imread(str);
imwrite(image, fullfile(Train_images, ['image' num2str(index) '.jpg']));
loop_counter = loop_counter + 1;
end
我想這個問題是什麼?
A)如果我們認爲我們有一個包含多個文件夾的數量(folder1, folder2, ...., foldern
目錄)。這些文件夾中的每個都包含多個圖像那麼,如何編輯1)中的代碼,以便應用相同的概念並獲取包含相同數量文件夾的新目錄「Target_File」,但每個文件夾都包含灰度圖像?
然後,從A創建的Target_File
):我想從在TARGET_FILE每個文件夾,圖像的特定數量的選擇(隨機如2)),並把它們在訓練文件,以及測試文件中的其餘圖像。針對目錄中的所有文件夾重複此過程。
因此,如果該目錄包含3個文件夾,這些文件夾中的每一個都被分成訓練和測試文件。所以第一個文件夾分爲train1和test1,第二個目錄分別爲train2和test2,第三個目錄分別爲train3和test3等。那麼如何在2)中編輯我的代碼呢?
任何幫助將不勝感激。
使用'imread' /'imwrite'複製JPEG會降低質量以及不必要的複雜 - 只需使用['copyfile'](http://www.mathworks.co.uk/help/matlab/ref/) copyfile.html)。另外,你可以用'randperm(totalNumberOfFiles,numberIWantToUse)'直接生成訓練集索引 - 不需要中間列表。 – Notlikethat
請你能幫我編輯我的代碼在1和2爲了回答我的行爲。提前致謝! – Christina