MATLAB中uigetfile函數使用方法

函數原型

標準化打開選擇文件對話框:

function [FileName,PathName,FilterIndex] = uigetfile(FilterSpec,DialogTitle,DefaultName)

參數

FileName:返回的文件名
PathName:返回的文件的路徑名
FilterIndex:選擇的文件類型
FilterSpec:文件類型設置
DialogTitle:打開對話框的標題
DefaultName:默認指向的文件名


使用方法

1.最簡單的形式,只設置了一種可選擇的文件類型

[FileName,PathName] = uigetfile('*.m','Select the M-file');

2.設置多種文件類型

[filename, pathname] = uigetfile({'*.m';'*.mdl';'*.mat';'*.*'},'File Selector');

3.可以爲文件類型設置說明,注意書寫格式

[filename, pathname] = uigetfile( ...
{'*.m;*.fig;*.mat;*.mdl','MATLAB Files (*.m,*.fig,*.mat,*.mdl)';
   '*.m',  'M-files (*.m)'; ...
   '*.fig','Figures (*.fig)'; ...
   '*.mat','MAT-files (*.mat)'; ...
   '*.mdl','Models (*.mdl)'; ...
   '*.*',  'All Files (*.*)'}, ...
   'Pick a file');

4.可返回選擇的文件類型序號,並且可以設置文件多選,設置文件多選時注意,當只選了一個文件時,返回的filename爲字符串,選擇多個文件時,返回的元胞類型。

[filename, pathname, filterindex] = uigetfile( ...
{  '*.mat','MAT-files (*.mat)'; ...
   '*.mdl','Models (*.mdl)'; ...
   '*.*',  'All Files (*.*)'}, ...
   'Pick a file', ...
   'MultiSelect', 'on');

5.可以設置默認文件名

[filename, pathname] = uigetfile( ...
{  '*.jpg;*.tif;*.png;*.gif','All Image Files';...
   '*.*','All Files' },'mytitle',...
   '/home/username/Pictures/image.jpg');

6.一點小技巧

當返回了一個文件的時候,可以用fullfile將路徑和文件名組合起來,如

[filename, pathname] = uigetfile('*.m', 'Pick an M-file');
if isequal(filename,0)
   disp('User selected Cancel')
else
   disp(['User selected', fullfile(pathname, filename)])
end

例子1:打開圖像

clear;
[filename, pathname] = uigetfile( '*.bmp', 'Read an image file' )
img = imread( [pathname, filename] );
imshow(img);

例子2:縮放圖像

%修改圖片的大小
%%
clc
clear all
close all
%%
scale=inputdlg('Scale','Input the scale',1,{'0.5'});
%%
[filename, pathname] = uigetfile( ...
    {'*.jpg;*.tif;*.png;*.gif','All Image Files';...
    '*.*','All Files' },...
    'Select the images(Multi-Select)', ...
    'MultiSelect', 'on');
%%
if ~iscell(filename)
    filename1{1}=filename;
else
    filename1=filename;
end
%%
for i=1:length(filename1)
    image=imread(strcat(pathname,filename1{i}));
    image_resize=imresize(image,eval(scale{1}));
    imwrite(image_resize,strcat(pathname,datestr(now, 'mmddHH'),filename1{i}));
end
發佈了43 篇原創文章 · 獲贊 42 · 訪問量 39萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章