如何使ginput限制在当前轴上以选择种子点

时间:2017-04-07 17:40:23

标签: matlab matlab-figure matlab-guide ginput

我附加了一个示例GUI代码,它有两个轴,有2个图像,当我使用ginput选择种子点时,我能够在任意一个轴上进行选择,无论如何都要将ginput限制为特定的轴

% --- Executes on button press in open.
function open_Callback(hObject, eventdata, handles)
% hObject    handle to open (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global img1;
global img2;

img1 = imread('peppers.png');
img2 = imread('rice.png');

axes(handles.axes1);
imshow(img1,[]);
axes(handles.axes2);
imshow(img2,[]);


% --- Executes on button press in seedpointSelect.
function seedpointSelect_Callback(hObject, eventdata, handles)
% hObject    handle to seedpointSelect (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global img1;
global img2;
global x;
global y;

axes(handles.axes1);
imshow(img1,[]);
[y,x] = ginput(handles.axes1);
y = round(y); x = round(x);
set(handles.xcord,'String',num2str(x));
set(handles.ycord,'String',num2str(y));

任何有关限制输入到特定轴的帮助,

谢谢, 戈皮

2 个答案:

答案 0 :(得分:1)

在旧版本的MATLAB中,您曾经能够更改HitTest的{​​{1}}属性,以忽略来自axes的点击

ginput

更好的方法是使用set(handles.axes2, 'Hittest', 'off') ,因为您可以使用ButtonDownFcn对象更好地控制鼠标事件。

axes

开始
OpeningFcn

然后您需要创建回调函数

set(handles.axes1, 'ButtonDownFcn', @mouseCallback)

答案 1 :(得分:0)

请勿使用ginput,而是创建鼠标点击回调(ButtonDownFcn)。例如,您可以将回调设置为从轴中删除回调函数。在设置回调的主程序中,然后waitfor要更改该属性。用户单击后,您将立即获得控制权,然后您可以读取上次鼠标单击的位置(CurrentPoint)。请注意,您读出的位置是轴坐标,而不是屏幕像素。这是一件好事,它很可能对应于显示的图像中的像素。