2013-12-12 66 views
0

我在matlab上做了一个小小的界面,现在出现了问题。所以基本上,我有一个图像和两个按钮,第一个是旋转图像(以ginput(2)取2个坐标),第二个是裁剪图像(也取两个坐标)。在matlab中使用ginput后更新img图形用户界面

我想在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 

我敢肯定,问题出现是因为我的图像不是全局变量,但我没有找到正确的方式来声明它。

任何人都可以帮助我吗?

非常感谢=) (顺便说一句,对不起,我的英语,这不是我的母语)

回答

0

pushbutton1_CallbackprojetGUI_OpeningFcnpushbutton2_Callback嵌套函数?如果不是,那么是的,img只存在于projetGUI_OpeningFcn的工作空间中,但不存在于其他两个函数的工作空间中。

可能的解决方法是使用handles.img,而不是imgprojetGUI_OpeningFcnguidata(hObject, handles);末各功能的。然后该图像可以通过handles.img等其他功能访问。

查看documentation on guidata了解更多信息。

+0

非常感谢,它的工作原理! = d – tomatediabolik