Matlab gui。将文件名(图像)作为输入/参数传递给函数

时间:2013-12-05 08:42:32

标签: matlab matlab-guide

我正在学习gui,并致力于实现简单的基本处理功能。我已经使用gui在MATLAB中成功编写并完成了所有操作,但只停留在一个小的(基本的)东西上。传递参数作为输入。

现在我的代码在生成的m文件中采用“硬编码”图像。

function varargout = testfinal(varargin)
% TESTFINAL MATLAB code for testfinal.fig
%      TESTFINAL, by itself, creates a new TESTFINAL or raises the existing
%      singleton*.
%
%      H = TESTFINAL returns the handle to a new TESTFINAL or the handle to
%      the existing singleton*.
%
%      TESTFINAL('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in TESTFINAL.M with the given input arguments.
%
% ........

例如Im = Imread('myimage.jpg');在开场功能中如下图所示:

function testfinal_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to testfinal (see VARARGIN)
% Choose default command line output for testgui

handles.output = hObject;
Img=imread('Myimage.jpg');
.....

我现在要做的是能够通过命令窗口传递图像文件名,例如在我可以编写的命令行中

testfinal('Myimage.jpg');

这将在GUI上的轴上显示图像(已经使用硬编码方法完成),并且能够像以前一样完成剩下的工作。

任何帮助?我似乎无法弄清楚如何使用GUI。

2 个答案:

答案 0 :(得分:1)

在编写GUI时,您可能更喜欢类似GUI的解决方案而不是传统的可能性inputinputdlg:使用uigetfile

filetype = '*.jpg';
description =  'myImages';
dialogtitle = 'Load my images';
defaultpath = ['c:\...];         %which is opened by dialog start

[filename, pathname] = uigetfile({filetype,description},dialogtitle,defaultpath);
Img = imread( [pathname filename] );

testfinal( [pathname filename] );

或只是

testfinal( filename );

如果你仍然留在你的工作区。

有关更简单或更复杂的示例,请参阅documentation

答案 1 :(得分:0)

您可以通过Matlab命令行将图像路径传递给GUI,并在Guide GUI的_OpeningFcn中使用该路径。在下面的示例中,我只是在文本框中显示输入字符串。请考虑到没有任何输入。

% --- Executes just before GuiWithInput is made visible.
function GuiWithInput_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to GuiWithInput (see VARARGIN)

% Choose default command line output for GuiWithInput
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

if(numel(varargin))
    TextToDisplay = varargin{1};
else
    TextToDisplay = 'Dummy String to be displayed!';
end

set( handles.edit1, 'String', TextToDisplay);

_OpeningFcn函数中的varargin变量包含用户提供给GUI的命令行输入。它是类型的单元阵列,每个单元包含提供的输入。

假设您的GUI调用是,

GUI_Name( 'input1', 2, [ 2; 4; 6])

您可以使用以下方法访问_OpeningFcn中的输入:

varargin{1}       % contains a string 'input1'
varargin{2}       % contains a double with value 2
varargin{3}       % contains a numeric column array with value [ 2; 4; 6]