MATLAB how to get mouse click coordinates

霸气de小男生 提交于 2019-11-27 23:13:58

Let's assume that you've plotted the image with handle imageHandle that:

imageHandle = imshow(imageObj);

You should assign the ButtonDownFcn to the image handle not the axes handle that:

set(imageHandle,'ButtonDownFcn',@ImageClickCallback);

and get the mouse coordinates from this function as follows:

function ImageClickCallback ( objectHandle , eventData )
   axesHandle  = get(objectHandle,'Parent');
   coordinates = get(axesHandle,'CurrentPoint'); 
   coordinates = coordinates(1,1:2);
   %// then here you can use coordinates as you want ...
end

You can try this small demo to check my answer:

function demoOnImageClick
clc;clear;
imObj = rand(500,500);
figure;
hAxes = axes();
imageHandle = imshow(imObj);
set(imageHandle,'ButtonDownFcn',@ImageClickCallback);

function ImageClickCallback ( objectHandle , eventData )
axesHandle  = get(objectHandle,'Parent');
coordinates = get(axesHandle,'CurrentPoint'); 
coordinates = coordinates(1,1:2);
message     = sprintf('x: %.1f , y: %.1f',coordinates (1) ,coordinates (2));
helpdlg(message);
end

end

You can get the axes handle from the image handle by

ah = get( imageHandle, 'Parent' );

Then you can get the mouse click position by

p = get( ah, 'CurrentPoint' );
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!