2017-09-09 2 views
0
function pushbutton1_Callback(hObject, eventdata, handles) 
% hObject handle to pushbutton1 (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 
f=imread('/Users/MoChutima/Desktop/WORK1:2560/ImageProcess/dip/dip/baboon.jpg'); 
Tscale = [handles.sx 0 0; 0 handles.sy 0; 0 0 1]; 
Trotation = [cos(handles.theta) sin(handles.theta) 0; -sin(handles.theta) cos(handles.theta) 0; 0 0 1]; 
Tshear = [1 handles.shx 0; handles.shy 1 0; 0 0 1]; 
T=Tscale*Trotation*Tshear; 
tform=maketform('affine',T); 
g=imtransform(f,tform,'bilinear'); 
imshow(g); 

et j'ai erreurréférence au champ non existant poignées Matlab

Error in Workex63>pushbutton1_Callback (line 82) 
Tscale = [handles.Sx 0 0; 0 handles.Sy 0; 0 0 1]; 

Error in gui_mainfcn (line 95) 
    feval(varargin{:}); 

Error in Workex63 (line 42) 
gui_mainfcn(gui_State, varargin{:}); 

Error in matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)Workex63('pushbutton1_Callback',hObject,eventdata,guidata(hObject)) 

Erreur lors de l'évaluation UIControl Callback

je géométrique dans l'interface graphique et je veux créer curseur et modifier le texte pour remplir nombre de cisaillement X, Y échelle X, Y mais maintenant je ne peux pas charger l'image à traiter.

Merci

+0

Salut et bienvenue à SO! Nous sommes là pour vous aider * à * écrire * un meilleur code. Comme il est actuellement indiqué, votre problème est pratiquement impossible à reproduire, donc vous n'aurez probablement pas beaucoup de réponses. En outre, il ressemble plutôt à un copier-coller direct de votre code + sortie sans appliquer de techniques de débogage standard, ce qui n'est généralement pas ce que nous faisons ici. S'il vous plaît lire la FAQ sur la façon d'écrire un [exemple de travail minimal] (https://stackoverflow.com/help/mcve), et [quel genre de questions vous pouvez demander ici] (https://stackoverflow.com/help/ sur le sujet). –

Répondre

0

En fait, je pense que vous êtes confus contrôle (zone de texte, case à cocher, etc ...) avec leur valeur sous-jacente.

Supposons, par exemple, que handles.theta fait référence à un contrôle Slider et que handles.ssomething fait référence à un contrôle EditText dans lequel l'utilisateur peut insérer une valeur numérique. Si vous souhaitez récupérer leurs valeurs et de les utiliser afin de traiter vos calculs, c'est ce que vous avez à faire:

th = get(handles.theta,'Value'); 
ss = str2double(get(handles.ssomething,'String')); 

ou (c'est la même chose, mais je préfère cette approche):

th = handles.theta.Value; 
ss = str2double(handles.ssomething.String); 

donc, pour corriger votre code, d'abord récupérer toutes les valeurs numériques dont vous avez besoin de vos contrôles d'application, puis procéder à des calculs:

function pushbutton1_Callback(hObject, eventdata, handles) 
% hObject handle to pushbutton1 (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 

th = handles.theta.Value; 
shx = str2double(handles.shx.String); 
shy = str2double(handles.shy.String); 
sx = str2double(handles.sx.String); 
sy = str2double(handles.sy.String); 

f = imread('myimage.jpg'); 
Tscale = [sx 0 0; 0 sy 0; 0 0 1]; 
Trotation = [cos(th) sin(th) 0; -sin(th) cos(th) 0; 0 0 1]; 
Tshear = [1 shx 0; shy 1 0; 0 0 1]; 
T=Tscale*Trotation*Tshear; 
tform=maketform('affine',T); 
g=imtransform(f,tform,'bilinear'); 
imshow(g); 

ne pas oublier de mettre en œuvre un contrôle de santé mentale dans votre EditText contrôles à travers un Callback afin de valider l'entrée de l'utilisateur (et d'empêcher l'insertion de valeurs erronées). Cela ne fait pas partie de la question, mais je suis sûr que vous trouverez des centaines d'exemples pour cela.