我现在正在matlab上做一个小接口,遇到了一个问题。所以基本上,我有一个图像和两个按钮,第一个是旋转图像(用ginput(2)
获取两个坐标),第二个是裁剪图像(也获取两个座标)。
当我有2 x和2 y 时,我想更新我的图像
所以,我在这里声明我的图像:
function projetGUI_OpeningFcn(hObject, eventdata, handles, varargin)
% Choose default command line output for projetGUI
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
axes(handles.axes1);
img = imread('plaque3.png');
imshow(img)
这是我的第一个按钮:
function pushbutton1_Callback(hObject, eventdata, handles)
[x,y] =ginput(2);
angleRad = atan((y(2)-y(1))/(x(2)-x(1)));
angleDeg = radtodeg(angleRad);
img = imrotate(img, angleDeg);
imshow(img);
set (handles.text1, 'String' ,'Résults ') ;
这是我的第二个按钮:
function pushbutton2_Callback(hObject, eventdata, handles)
[xcrop,ycrop] = ginput(2);
largeur = xcrop(2) - xcrop(1);
hauteur = ycrop(2) - ycrop(1);
img = imcrop(img,[xcrop(1) ycrop(1) largeur hauteur]);
imshow(img);
set (handles.text1, 'String' ,'Results ') ;
这就是我得到的错误:
Undefined function or variable "img".
Error in projetGUI>pushbutton1_Callback (line 91)
img = imrotate(img, angleDeg);
Error in gui_mainfcn (line 96)
feval(varargin{:});
Error in projetGUI (line 43)
gui_mainfcn(gui_State, varargin{:});
Error in
@(hObject,eventdata)projetGUI('pushbutton1_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating uicontrol Callback
我很确定问题的出现是因为我的图像不是全局变量,但我没有找到正确的方法来声明它
有人能帮我吗?
非常感谢=)(顺便说一句,对不起我的英语,它不是我的母语)
pushbutton1_Callback
和pushbutton2_Callback
是projetGUI_OpeningFcn
的嵌套函数吗?如果不是,那么是的,img
只存在于projetGUI_OpeningFcn
的工作空间中,而不存在于其他两个函数的工作空间。
一个可能的解决方法是在projetGUI_OpeningFcn
中使用handles.img
而不是img
,并且在每个函数的末尾使用guidata(hObject, handles);
。然后,该图像将可由作为handles.img
的其他功能访问。
有关更多信息,请参阅guidata
上的文档。