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

を処理し、Uicontrolのコールバックリファレンスは、MATLAB

を評価しながら、私は私がGUIで幾何学的誤差

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

エラーを行いいると私は埋めるために、スライダーとエディットテキストを作成したいですShear X、Y Scale X、Yの数ですが、今は画像をロードできません。

おかげ

+0

こんにちは、ようこそ!私たちはより良いコードを書くのを手伝っています。現在のところ、あなたの問題は、私たちが再現することは事実上不可能なので、多くの回答を得ることはできません。また、標準的なデバッグ手法を適用せずにコード+出力を直接コピー貼り付けているように見えますが、これは一般的にここでやっていることではありません。 [最小限の動作例](https://stackoverflow.com/help/mcve)の記述方法と[どのような質問をここで聞くことができますか?](https://stackoverflow.com/help/)のFAQをお読みください。オントピック)。 –

答えて

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を介して制御します。これは質問の一部ではありませんが、私はあなたがそれについて数多くの例を見つけられると確信しています。