我有一个项目可以从picture.it使用反向传播比例共轭梯度进行训练。我使用了10个组件进行输入。 r,g,b,标准差,熵,阈值(Onsu方法),包含对比度,同质性,相关性和能量的glcm。我手动提取它们。我有100输入。 50是对象,50不是object.it很难保持手动方法。所以我想使用循环和数组。我使用2个文件夹作为文件对象而不是对象。如何在2个文件夹中提取文件? 第一个文件夹:C:\ Documents and Settings \ User \ My Documents \ MATLAB \ object 第二个文件夹:C:\ Documents and Settings \ User \ My Documents \ non object
这是我的编码。我手动写它们直到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'});
我希望你能给出解决方案。请帮帮我。
答案 0 :(得分:3)
如果您的所有文件都命名为1.jpg,2.jpg,...,那么您可以执行以下操作:
for i = 1:50
fileName = sprintf('%d.jpg', i);
kl = imread(fileName);
... the rest of your code...
end
答案 1 :(得分: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