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