如何在Matlab图形轴上获得鼠标点击位置?

时间:2012-11-23 12:00:26

标签: matlab user-interface

我想点击一个Matlab图,找出点击位置的x和y位置。

在图表中,我认为有一种方法可以点击线上的点并获得它的x和y坐标。如果没有绘制图表,我该怎么做呢?

4 个答案:

答案 0 :(得分:6)

以下是如何最优雅地完成这项工作:

function test

    % create test figure
    f = figure(1);

    % set function to call on mouse click
    set(f, 'WindowButtonDownFcn', @clicker);


end

% function called on mouse click in the figure
function clicker(h,~)


    get(h, 'selectiontype')
    % 'normal' for left moue button
    % 'alt' for right mouse button
    % 'extend' for middle mouse button
    % 'open' on double click

    get(h, 'currentpoint')
    % Current mouse location, in pixels from the lower left.
    % When the units of the figure are 'normalized', the
    % coordinates will be [0 0] inb lower left, and [1 1] in
    % the upper right.

end

答案 1 :(得分:5)

创建数字后,尝试

[x_coord, y_coord]=ginput(1);

所以你可以在图上单击一次(这就是参数为1的原因),你将得到函数ginput()返回的坐标。

答案 2 :(得分:1)

也许这也有用:

function [loc] = get_image_point (I)
    figure('name','Doubleclick to set location');imshow(I);
    [c r] = getpts(1);
    loc = int32([c r]);
    if size(loc,1)>1
        loc = [loc(1,1) loc(1,2)];
    end
    close all;
end

斯蒂芬

答案 3 :(得分:0)

注意:   - getpts() - 是一个“图像处理工具箱”功能。   - ginput() - 等待你的鼠标点击,暂停执行直到你点击,并且仅在被叫时才有效。

get(h, 'currentpoint')只要您的程序正在运行,就可以随时使用。