2012-12-08 51 views
1

這是我第一次創建一個matlab GUI。通過在matlab中單擊它獲得像素的座標

我想獲得的圖像中的像素的通過點擊它使用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正常工作?

謝謝,

+0

您需要通過編程來處理它們或者只是想看看它們嗎? –

回答

1

這些功能需要設置。像這樣的東西會工作:

set(hFigure,'ButtonDownFcn', @axes1_ButtonDownFcn); 
+0

我更新了我的問題。 – HforHisham

1

也就是說,只是因爲當你在一個Axes執行功能imshowMatlab GUI一個怪異的行爲,它重軸的屬性。

您會看到由圖像和衝浪命令靜默製作的軸屬性更改的副作用。 [MathWorks公司:here]

試試這個代碼,以顯示您的圖片:

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工具,它從Toolbar Editor添加到您的GUI,你用它來瀏覽Axes情節或圖像,並顯示來自點擊位置的信息,甚至可以更改其操作代碼。

相關問題