Unable to save image using a SAVE button

I have created a matlab GUI where I want to save the processed images using a SAVE button. I am using a slider where I can browse through the processed images. I want to save each image with the SAVE button. Unfortunately, the images are not saved in the correct format(I want to save it in the jpeg format). Any suggestions would be appreciated.
function pushbutton4_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
handles = guidata(hObject);
filePattern=handles.filePattern;
num_files=handles.num_files;
theFiles=handles.theFiles;
myFolder=handles.myFolder;
value=handles.value;
seg=handles.seg;
% dirName = fullfile(pwd,'Results',myFolder);
% if ~exist(dirName,'dir')
% mkdir(dirName);
% end
[filename, foldername] = uiputfile('D:\regionGrowing_MLT');
complete_name = fullfile(foldername, filename);
imwrite(seg{value}, complete_name,'jpg');
guidata(hObject, handles);
end

6 comentarios

Geoff Hayes
Geoff Hayes el 14 de Mayo de 2021
Warid - what format are the files being saved as? Are you sure that you are saving the correct image to file? I'm assuming that seg is a cell array of each of the images that you are cycling through.
Warid Islam
Warid Islam el 14 de Mayo de 2021
Hi Geoff,
I don't know the format of the file. I have attached the property of the file. I am not sure if I am saving the correct image to the file. seg is a cell array. I want to call each element in the array and save those images using the SAVE button.
Walter Roberson
Walter Roberson el 14 de Mayo de 2021
I recommend that you configure to show file extensions; https://fileinfo.com/help/windows_10_show_file_extensions
Warid Islam
Warid Islam el 14 de Mayo de 2021
I applied it to my file. The 'j' is the file that I get after clicking the SAVE button.
Walter Roberson
Walter Roberson el 15 de Mayo de 2021
The implication is that when you do the [filename, foldername] = uiputfile('D:\regionGrowing_MLT'); that the user is giving you a name without any file extension, and you are not appending an extension.
Your file j should be a jpeg file, considering the way you created it.
Warid Islam
Warid Islam el 15 de Mayo de 2021
Your suggestions worked. Thanks a lot.

Iniciar sesión para comentar.

 Respuesta aceptada

Image Analyst
Image Analyst el 15 de Mayo de 2021
A more robust way is this:
% Get the name of the file that the user wants to save.
% Note, if you're saving an image you can use imsave() instead of uiputfile().
startingFolder = 'D:\regionGrowing_MLT'; % Or "pwd" or wherever you want.
if ~isfolder(startingFolder)
startingFolder = pwd;
end
defaultFileName = fullfile(startingFolder, '*.jpg');
[baseFileName, folder] = uiputfile(defaultFileName, 'Specify a file');
if baseFileName == 0
% User clicked the Cancel button.
return;
end
% If they entered an extension, throw it away because (for some reason)
% we want to force it to be JPG format, not whatever other format they may have entered.
[~, baseFileNameNoExt, ext] = fileparts(baseFileName)
fullFileName = fullfile(folder, [baseFileNameNoExt, '.jpg'])
% Now save the JPG image.
imwrite(seg{value}, fullFileName);
Of course you're better off using PNG format than the lossy JPG which often shows bad compression artifacts.

Más respuestas (0)

Categorías

Más información sobre Convert Image Type en Centro de ayuda y File Exchange.

Productos

Versión

R2020b

Preguntada:

el 14 de Mayo de 2021

Comentada:

el 18 de Mayo de 2021

Community Treasure Hunt

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

Start Hunting!

Translated by