Unable to image files automatically with different file names

1 回表示 (過去 30 日間)
Warid Islam
Warid Islam 2021 年 6 月 7 日
コメント済み: Warid Islam 2021 年 6 月 8 日
Hi,
I have a GUi where I want to save the images from the 2nd image axes(handles.axes2) and generate file names automatically. Please find my code below:
function pushbutton1_Callback(hObject, eventdata, handles)
myFolder = 'D:\regionGrowing_MLT';
% Check to make sure that folder actually exists. Warn user if it doesn't.
if ~isfolder(myFolder)
errorMessage = sprintf('Error: The following folder does not exist:\n%s\nPlease specify a new folder.', myFolder);
uiwait(warndlg(errorMessage));
myFolder = uigetdir(); % Ask for a new one.
if myFolder == 0
% User clicked Cancel
return;
end
end
% Get a list of all files in the folder with the desired file name pattern.
filePattern = fullfile(myFolder, '*.jpg'); % Change to whatever pattern you need.
theFiles = dir(filePattern);
num_files=length(theFiles);
imgs=cell(1,num_files);
handles.num_files=num_files;
handles.myFolder=myFolder;
handles.filePattern=filePattern;
handles.theFiles=theFiles;
handles.InputImage = {};
for k = 1 : length(theFiles)
baseFileName = theFiles(k).name;
fullFileName = fullfile(theFiles(k).folder, baseFileName);
fprintf(1, 'Now reading %s\n', fullFileName);
% Now do whatever you want with this file name,
% such as reading it in as an image array with imread()
imageArray = imread(fullFileName);
imshow(imageArray,'parent',handles.axes1); % Display image.
drawnow; % Force display to update immediately.
InputImage=imageArray;
% axes(handles.axes1);
handles.num_files=num_files;
handles.theFiles=theFiles;
handles.InputImage{end+1}= InputImage;
setappdata(handles.pushbutton1,'img',handles.InputImage);
guidata(hObject, handles);
end
end
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
InputImage=handles.InputImage;
theFiles = handles.theFiles;
J=InputImage;
handles.seg={};
% J = getappdata(handles.pushbutton1,'img');
for i = 1:length(theFiles)
try
J{i}=rgb2gray(J{i});
end
x=300; y=340;
a=imgaussfilt(J{i},2);
b=adapthisteq(a);
m=regiongrowing_MLT(b,x,y,12);
m=imfill(m,'holes');
% figure,imshow(m)
bw=imbinarize(m);
bw=bwareafilt(bw,1);
% figure,imshow(bw)
I = imresize(m,.5); %-- make image smaller
m1 = imresize(bw,.5); % for fast computation
% subplot(2,2,1); imshow(I); title('Input Image');
% subplot(2,2,2); imshow(m1); title('Initialization');
% subplot(2,2,3); title('Segmentation');
seg = region_seg(I, m1, 30); %-- Run segmentation
imshow(seg,'parent',handles.axes2);
% axes(handles.axes2);
handles.seg{end+1}=seg;
setappdata(handles.pushbutton2,'img',handles.seg);
end
filename = fullfile(myFolder, sprintf('file%d.jpg',seg));
imwrite(InputImage, filename);
guidata(hObject, handles);
end
I want the results to be saved as file1.jpg,file2.jpg,file3.jpg, etc. Unfortunately, I get the following errors.
D:\regionGrowing_MLT\file0.jpgfile0.jpgfile0.jpgfile0.jpgfile0,...
for writing. You might not have write permission.
Error in ngui>pushbutton2_Callback (line 167)
imwrite(seg, filename);
I have attached few imput images. Any suggestions would be appreciated.

採用された回答

Geoff Hayes
Geoff Hayes 2021 年 6 月 8 日
Warid - the code error message
Error in ngui>pushbutton2_Callback (line 167)
imwrite(seg, filename);
does not correspond exactly to a line of code in your pushbutton2_Callback. The closest I could see was
imwrite(InputImage, filename);
Note that filename is set as
filename = fullfile(myFolder, sprintf('file%d.jpg',seg));
but nowhere in the function do you define what myFolder is. Perhaps you need to be using handles.myFolder.
  3 件のコメント
Geoff Hayes
Geoff Hayes 2021 年 6 月 8 日
Hi Warid - but is myFolder set in your callback function? Have you tried using handles.myFolder?
Warid Islam
Warid Islam 2021 年 6 月 8 日
Using handles.myFolder solved the problem for me. Thank you for your suggestion.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeImages についてさらに検索

製品


リリース

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by