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

这仅仅是因为当您在 上执行函数时会出现奇怪的行为,Matlab GUI它会重置 Axes 的属性。imshowAxes

您会看到由 image 和 surf 命令悄悄地更改轴属性的副作用。[由 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工具,将其添加到您的GUIfrom 中Toolbar Editor,然后使用它在Axes绘图或图像上导航并显示点击位置的信息,您甚至可以更改其操作代码。

于 2012-12-09T14:20:47.410 回答
1

需要设置这些功能。像这样的东西会起作用:

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