2012-11-23 6 views
3

Matlab 그림을 클릭하고 클릭 한 위치의 x 및 y 위치를 찾고 싶습니다.Matlab 그림 축의 마우스 클릭 위치를 얻는 방법은 무엇입니까?

그래프에서 선상의 점을 클릭하여 x 및 y 좌표를 얻는 방법이 있다고 생각합니다. 플롯 된 그래프가 없으면 어떻게합니까? 당신이 그림은

[x_coord, y_coord]=ginput(1); 

그래서 당신이 그림을 한 번 클릭 수 (인수가 하나입니다 그 이유는) 당신이 좌표는 함수 ginput()에 의해 반환 반환 요금이 부과되지 않습니다 만든 후에

+0

"그래프가 그려져 있지 않으면 어떻게합니까?"라고 묻는다면 명확하지 않습니다. 하지만 아마 ginput()을 사용하고 싶을 것이다. 예 : 여기를 참조하십시오 : [get-pixel-coordinates-efficient-in-matlab] (http://stackoverflow.com/questions/6541444/getting-pixel-coordinates-efficiently-in-matlab) – Justin

+0

어딘가에 빈을 클릭하고 싶습니다. 플롯 (그림 (1)은 실제로 그래프가 나타나는 흰색 캔버스를 생성하지 않기 때문에 matlab은이를 축이라고 부릅니다.) Axes의 x와 y 좌표의 최대/최소 한계를 미리 정의하고 축의 빈 영역을 클릭하면 변수의 x와 y 좌표를 저장할 수 있습니다. – user13267

+1

다음을 사용할 수 있습니다. 콜백. – bonCodigo

답변

5

.

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

은 어쩌면이 또한 작동합니다 :

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 

스테판

0

참고 : - getpts()을 -에 "이미지 처리 도구 상자"입니다 기능. - ginput() - 마우스 클릭을 기다리고, 클릭 할 때까지 실행을 중단하고, 호출되었을 때만 작동합니다.

반면에 get(h, 'currentpoint')은 프로그램이 실행되는 한 언제든지 작동합니다.

관련 문제