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 件のコメント

Geoff Hayes
Geoff Hayes 2021 年 5 月 14 日
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 2021 年 5 月 14 日
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 2021 年 5 月 14 日
I recommend that you configure to show file extensions; https://fileinfo.com/help/windows_10_show_file_extensions
Warid Islam
Warid Islam 2021 年 5 月 14 日
I applied it to my file. The 'j' is the file that I get after clicking the SAVE button.
Walter Roberson
Walter Roberson 2021 年 5 月 15 日
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 2021 年 5 月 15 日
Your suggestions worked. Thanks a lot.

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

 採用された回答

Image Analyst
Image Analyst 2021 年 5 月 15 日

0 投票

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.

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeConvert Image Type についてさらに検索

製品

リリース

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by