2012-12-08 30 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情节或图像,并显示来自点击位置的信息,甚至可以更改其操作代码。

相关问题