我正在学习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。
答案 0 :(得分:1)
在编写GUI时,您可能更喜欢类似GUI的解决方案而不是传统的可能性input
和inputdlg
:使用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]