2017-09-09 64 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); 

,我有錯誤參考不存在的場處理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)) 

錯誤而評估UIControl回調

我做GUI幾何,我想創建滑塊和編輯文本填寫Shear X,Y Scale X,Y的數量,但現在無法加載圖片進行處理。

感謝

+0

嗨,歡迎來到SO!我們在這裏幫助您*編寫更好的代碼。正如目前所述,您的問題對我們來說實際上是不可能重現的,因此您可能得不到很多答覆。此外,它看起來像是代碼+輸出的直接複製粘貼,而不應用標準調試技術,這通常不是我們在這裏所做的。請閱讀關於如何編寫[最小工作示例](https://stackoverflow.com/help/mcve)的常見問題以及[您可以在此處詢問的問題](https://stackoverflow.com/help/在話題)。 –

回答

0

其實我覺得你是混亂的控件(文本框,複選框,等...),與他們的潛在價值。

假設,例如,handles.theta引用一個Slider控制和handles.ssomething引用的EditText控制,其中,用戶可以插入一個數值。如果你想找回自己的價值觀和使用它們,以便處理您的計算,這是你必須做的事情:

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

或(這是相同的,但我更喜歡這種方法):

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

所以,要解決你的問題,首先從應用程序的控制檢索所有你需要的數值,然後用計算進行:

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); 

不要忘了在實行完整性檢查通過Callback進行控制以驗證用戶的輸入(並防止插入錯誤值)。這不是問題的一部分,但我敢肯定你會發現有數百個例子用Google搜索。