merge images from diffrent folder
4 次查看(过去 30 天)
显示 更早的评论
Hi,I need a code that merges 2 folders Jpg images that inside each of the folders 120 images,the format that I need to merge is on by on (1 from folder1 by 1 from folder2, 2 from folder 1 by 2 from folder 2, so on.) and pastes the merged images into a separate folder(new path).
Thank for help.
0 个评论
采纳的回答
Image Analyst
2019-12-22
编辑:Image Analyst
2019-12-22
Try this, making adaptations as needed:
% Specify the folder where the files live.
folder1 = 'D:\data\class 1';
% Check to make sure that folder actually exists. Warn user if it doesn't.
if ~isfolder(folder1)
errorMessage = sprintf('Error: The following folder does not exist:\n%s', folder1);
uiwait(warndlg(errorMessage));
return;
end
folder2 = 'D:\data\class 2';
% Check to make sure that folder actually exists. Warn user if it doesn't.
if ~isfolder(folder2)
errorMessage = sprintf('Error: The following folder does not exist:\n%s', folder2);
uiwait(warndlg(errorMessage));
return;
end
% Make an output folder.
outputFolder = 'D:\data\merge';
if ~isfolder(outputFolder)
% If it doesn't exist, create it.
mkdir(outputFolder);
end
% Get a list of all files in the folder with the desired file name pattern.
filePattern1 = fullfile(folder1, '*.jpg'); % Change to whatever pattern you need.
filePattern2 = fullfile(folder2, '*.jpg'); % Change to whatever pattern you need.
theFiles1 = dir(filePattern1);
theFiles2 = dir(filePattern2);
% Go through stitching together all the images.
for k = 1 : length(theFiles1)
baseFileName1 = theFiles1(k).name;
[~, baseFileName1NoExt, ~] = fileparts(baseFileName1);
fullFileName1 = fullfile(folder1, baseFileName1);
fprintf('Now reading %s\n', fullFileName1);
% Now do whatever you want with this file name,
% such as reading it in as an image array with imread()
image1 = imread(fullFileName1);
subplot(1, 3, 1);
imshow(image1); % Display image.
% Now read in image2
baseFileName2 = theFiles2(k).name;
fullFileName2 = fullfile(folder2, baseFileName2);
[~, baseFileName2NoExt, ~] = fileparts(baseFileName2);
fprintf('Now reading %s\n', fullFileName2);
% Now do whatever you want with this file name,
% such as reading it in as an image array with imread()
image2 = imread(fullFileName2);
subplot(1, 3, 2);
imshow(image2); % Display image.
% Stitch the image together vertically:
[rows1, columns1, numberOfColorChannels1] = size(image1);
[rows2, columns2, numberOfColorChannels2] = size(image2);
if columns1 == columns2 && numberOfColorChannels1 == numberOfColorChannels2
tallImage = [image1; image2];
subplot(1, 3, 3);
imshow(tallImage); % Display image.
drawnow; % Force display to update immediately.
fprintf('And I stitched them together.\n\n');
outputBaseFileName = sprintf('%s and %s.png', baseFileName1NoExt, baseFileName1NoExt);
outputFullFileName = fullfile(outputFolder, outputBaseFileName);
imwrite(tallImage, outputFullFileName);
fprintf('And I stitched them together and saved them as\n %s.\n\n', outputFullFileName);
else
% Columns or colors don't match - can't stitch together vertically.
warningMessage = sprintf('Cannot stitch together %s and %s because the columns or number of colors do not match.\n', ...
baseFileName1, baseFileName2);
promptMessage = sprintf('%s\nDo you want to Continue processing,\nor Quit processing?', warningMessage);
titleBarCaption = 'Continue?';
buttonText = questdlg(promptMessage, titleBarCaption, 'Continue', 'Quit', 'Continue');
if contains(buttonText, 'Quit')
break;
end
end
end
0 个评论
更多回答(4 个)
Image Analyst
2019-12-22
编辑:Image Analyst
2019-12-22
See the FAQ. It's a simple process to adapt it to have two folders and two filenames. Then you can stitch the files together like this:
tallImage = [image1; image2]; % Must have same number of columns.
wideImage = [image1, image2]; % Must have same number of rows.
You can also use imageDatastore().
6 个评论
Image Analyst
2019-12-22
Give me the name of the three folders (two input and one output). And give me some kind of direction for what you'd like to name the output file. And is image1 in folder 1 supposed to be matched up with an image in folder 2 that has the same filename as image 1 had? If not, how are you deciding which to stitch together?
Hamid Ebrahimi
2019-12-22
1 个评论
Image Analyst
2019-12-22
They are completely touching on the edges. Like I said, your original images are not the images alone but the figures, so they have tick marks, axss labels, a title, a colorbar, and white space around them. Just look at one by itself in some other programto verify, so you can see that stuff really IS in the image - it's not something MATLAB added. You told it to save those images with all that extra stuff in them. If you don't want that, save them with imwrite(), not saveas().
I'd ask your image comparison question in a new question.
Hamid Ebrahimi
2020-1-18
13 个评论
Image Analyst
2020-1-20
Well, I'm going to give up now. You're not turning over your data1EEG data for us to reproduce the scalograms. Plus you're calling cwtfilterbank() which is a function in the Wavelet Toolbox, which I don't have.
I suggest you
- start a new question/thread and
- specify that you're using the Wavelet Toolbox, and
- specify what release of MATLAB you're using, and
- attach your m-file, and
- attach your data file(s), and
- read this link
and maybe/hopefully someone with the Wavelet Toolbox can give you code for what you want to do.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Image Processing Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!