您的位置:首页 > 编程语言 > MATLAB

matlab中GUI界面点击图片获取坐标问题的解决方法

2016-10-13 10:15 459 查看
在matlab gui中,在axes上用imshow函数显示一副图片,然后在axes的ButtonDownFcn下写下相应的响应,比如获得图像任一像素的坐标点。但是当你点击axes时,是不会有任何响应的。

例子:用pushbutton来在axes上显示图像

function pushbutton1_Callback(hObject, eventdata, handles)

axes(handles.axes1);

% a7 = imshow(pic);

pic = imread(‘435-2.bmp’);

image(pic);

waitforbuttonpress;

pt = get(handles.axes1,’currentpoint’);%注意:问题出在这里。

m = round(pt(1,2));

n = round(pt(1,1));

H_text1=findobj(‘tag’,’text1’);

H_text2=findobj(‘tag’,’text2’);

% 将像素坐标点显示在文本框中

set(H_text1,’string’,num2str(m));

set(H_text2,’string’,num2str(n));

这样就可以得到坐标值了。

但是问题又来了,按下pushbutton,坐标值只能得到一次,想得到第二次,就得再按一次pushbutton,问题是,怎么样连续得到坐标值呢?

正确做法:下面是我的解决办法

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)

global img;

try

if(length(img)>0)

axes(handles.axes1);

imageHandle=imshow(img);

set(imageHandle,’ButtonDownFcn’,@ImageClickCallback);%设置鼠标点击响应函数为对对象

% imageHandle响应,而不是对axes1响应

end

catch

end

function ImageClickCallback ( objectHandle , eventData )

axesHandle = get(objectHandle,’Parent’);

%获取坐标轴axesHandles

coordinates = get(axesHandle,’CurrentPoint’);

%获取点击的处的坐标

coordinates = coordinates(1,1:2);

x=ceil(coordinates (1));

y=ceil(coordinates (2));

end

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐