How to compare images from 2 folders
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Fateme Jalali
le 30 Juil 2016
Commenté : 90Anonymous
le 9 Déc 2018
Hello.I have 2 folders of images and want to compare each image in folder 1 with each image in folder 2 in order to find almost similar images. I wrote the code but it can not open images in for loop.can any one help me plz? Here is my code:
doc1 = dir('E:\fake1\*.jpg');
doc2 = dir('E:\fake2\*.jpg');
d_1 = size(doc1);
d_2 = size(doc2);
Inputs1 = {doc1.name}';
Inputs2 = {doc2.name}';
for I1 = 1:d_1;
for I2 = 1:d_2;
X_1 = imread([doc1 Inputs1{I1}]);
X_2 = imread([doc2 Inputs2{I2}]);
compare_images = imabsdiff(X_1,X_2);
figure;
imshow(compare_images);
title('compare_images');
%comp1 = imshowpair(X_1,X_2,'diff');
end
end
0 commentaires
Réponse acceptée
Image Analyst
le 30 Juil 2016
Fateme, this is in the FAQ: http://matlab.wikia.com/wiki/FAQ#How_can_I_process_a_sequence_of_files.3F Look at the second code block.
Plus de réponses (2)
Azzi Abdelmalek
le 30 Juil 2016
Modifié(e) : Azzi Abdelmalek
le 30 Juil 2016
X_1 = imread(fullfile(doc1,Inputs1{I1}))
%or
X_1 = imread([doc1 '\' Inputs1{I1}])
Walter Roberson
le 31 Juil 2016
first_dir = 'E:\fake1';
second_dir = 'E:\fake2';
doc1 = dir(fullfile(first_dir, '*.jpg'));
doc2 = dir(fullfile(second_dir, '*.jpg'));
d_1 = length(doc1);
d_2 = length(doc2);
Inputs1 = {doc1.name}';
Inputs2 = {doc2.name}';
for I1 = 1:d_1
first_base = Inputs1{I1};
first_file = fullfile(first_dir, first_base);
X_1 = imread(first_file);
for I2 = 1:d_2
second_base = Inputs2{I1};
second_file = fullfile(second_dir, second_base);
X_2 = imread(second_file);
compare_images = imabsdiff(X_1,X_2);
figure;
imshow(compare_images);
title( sprintf('"%s" vs "%s"', second_base, first_base) );
%comp1 = imshowpair(X_1,X_2,'diff');
end
end
2 commentaires
Image Analyst
le 7 Déc 2018
Try this:
first_dir = 'D:\My Pictures\Misc';
second_dir = 'D:\My Pictures\Wallpapers';
fileList1 = dir(fullfile(first_dir, '*.jpg'));
fileList2 = dir(fullfile(second_dir, '*.jpg'));
numFiles1 = length(fileList1);
numFiles2 = length(fileList2);
baseFileNames1 = {fileList1.name}';
baseFileNames2 = {fileList2.name}';
for I1 = 1:numFiles1
firstBaseName = baseFileNames1{I1};
firstFullFileName = fullfile(first_dir, firstBaseName);
image1 = imread(firstFullFileName);
for I2 = 1:numFiles2
fprintf('\nComparing image #%d of %d in folder 1 to #%d of %d in folder 2.\n', ...
I1, numFiles1, I2, numFiles2);
secondBaseName = baseFileNames2{I2};
secondFullFileName = fullfile(second_dir, secondBaseName);
image2 = imread(secondFullFileName);
if isequal(size(image1), size(image2))
compare_images = imabsdiff(image1,image2);
% Sizes match. Subtract them and display the differences.
figure;
imshow(compare_images);
title( sprintf('"%s" vs "%s"', secondBaseName, firstBaseName) );
%comp1 = imshowpair(X_1,X_2,'diff');
else
% Sizes do NOT match. Print out that they don't match, then continue.
fprintf(' Not comparable because sizes do not match.\n');
[rows, columns, numColorChannels] = size(image1);
fprintf(' %s = %d rows by %d columns by %d color channels.\n', firstFullFileName, rows, columns, numColorChannels);
[rows, columns, numColorChannels] = size(image2);
fprintf(' %s = %d rows by %d columns by %d color channels.\n', secondFullFileName, rows, columns, numColorChannels);
end
end
end
90Anonymous
le 9 Déc 2018
Thanks again!
Voir également
Catégories
En savoir plus sur Image Processing Toolbox dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!