4

我想在 Matlab 图中单击并找出单击位置的 x 和 y 位置。

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

4

4 回答 4

7

这是最优雅的方法:

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
于 2012-11-24T08:14:08.187 回答
6

创建图形后,请尝试

[x_coord, y_coord]=ginput(1);

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

于 2012-11-23T13:40:00.950 回答
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

斯蒂芬

于 2016-08-10T12:19:10.563 回答
0

注: - getpts()- 是“图像处理工具箱”功能。- ginput()- 等待您的鼠标单击,在您单击之前暂停执行,并且仅在调用时才有效。

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

于 2016-12-11T07:27:46.787 回答