1

matlab GUI を作成するのはこれが初めてです。

matlabを使用して画像をクリックして画像内のピクセルの座標を取得したいのですが、軸を含むMatlab GUIを作成し、軸には次のコードで画像が含まれています。

function axes1_CreateFcn(hObject, eventdata, handles)
     axes(hObject);
     I = imread('cameraman.tif');
     imshow(I);

ButtonDownFcnクリックされたピクセルの座標を取得するには:

function axes1_ButtonDownFcn(hObject, eventdata, handles)
     handles.xy1 = round(get(handles.axes1,'Currentpoint'));
     x1 = handles.xy1(1,1);
     y1 = handles.xy1(1,2);

問題は、画像をクリックしてButtonDownFcnも呼び出されないことですが、CreateFcn関数からコードを削除すると、ButtonDownFcnが呼び出されます。

画像を表示しながら同時にButtonDownFcn作業を続ける方法は?

ありがとう、

4

2 に答える 2

1

これらの機能を設定する必要があります。次のようなものが機能します。

set(hFigure,'ButtonDownFcn', @axes1_ButtonDownFcn);
于 2012-12-08T23:14:40.750 に答える
1

これは、 で関数をMatlab GUI実行すると、Axes のプロパティがリセットされるという奇妙な動作のためです。imshowAxes

image および surf コマンドによって静かに行われる Axes プロパティへの変更の副作用が見られます。[ by Mathworks :こちら]

画像を表示するには、次のコードを試してください。

function axes1_CreateFcn(hObject, eventdata, handles) 
   axes(hObject);
   tag = get(hObject,'Tag');
   I = imread('cameraman.tif');
   imshow(I);
   set(hObject,'Tag',tag);
   set(hFigure,'ButtonDownFcn', @axes1_ButtonDownFcn);
end

座標のみを表示したい場合は、Data Cursorツールを使用してフォームに追加し、それGUIToolbar Editor使用してプロットまたは画像をナビゲートしAxes、クリック位置から情報を表示します。アクション コードを変更することもできます。

于 2012-12-09T14:20:47.410 に答える