MATLAB: Overwritting problem in for loop

overwrite

I simply crop images and save them with a number.For example i have Grain #1,Grain #2,Grain #3.If i move to another image and crop further images i cannot create images Grain #4 ,Grain #5 etc and instead there are overwritten images…Here is my code.Where is my mistake??
clear all;
clc;
addpath(genpath('C:\Users\User\Desktop\TEI'));
imtool close all;
k=input('How many times do you want to repeat the cropping?');
IMAGE = uigetfile('*.jpg','Pick an image');
A=imread(IMAGE);
figure,imshow(IMAGE);
folder=('C:\Users\User\Desktop\TEI\BEE_POLLEN _PROJECT\Scripts');
for i=1:k
f = sprintf('Select a ROI and double click to crop #%d',i);
uiwait(warndlg(f));
[B, rect] = imcrop(A);
baseFileName = sprintf('Grain #%d.jpg',i);
fullFileName = fullfile(folder, baseFileName);
baseFileName2 = sprintf('Grain #%d .jpg', (i+1));
fullFileName2 = fullfile(folder, baseFileName2);
if exist(fullFileName)
imwrite(B, fullFileName2);
else
imwrite(B, fullFileName);
end
if i==k
f=sprintf('FINISHED!!');
uiwait(warndlg(f));
end
end

Best Answer

nExisting = numel(dir(fullfile(folder, 'Grain #*.jpg')));
for i = 1:k
f = sprintf('Select a ROI and double click to crop #%d',i);
uiwait(warndlg(f));
[B, rect] = imcrop(A);
baseFileName = sprintf('Grain #%d.jpg', i + nExisting);
fullFileName = fullfile(folder, baseFileName);
if exist(fullFileName, 'file') % with 'file' !!!

error('Collision with filename: %s', fullFileName);
end
imwrite(B, fullFileName);
end
f = 'FINISHED!!'; % without sprintf
uiwait(warndlg(f));
Or use https://www.mathworks.com/matlabcentral/fileexchange/47434-natural-order-filename-sort (link) tofind the largest index in the file names and start counting there. (I'd prefer this.)
Another idea is to check the existence of a file name dynamically:
count = 1;
for i = 1:k
...
isFree = false;
while ~isFree
baseFileName = sprintf('Grain #%d.jpg', count);
fullFileName = fullfile(folder, baseFileName);
if ~exist(fullFileName, 'file') % with 'file' !!!
isFree = true;
end
count = count + 1;
end
end
It is not tricky, as you can see.