2016-10-12 2 views
0

Мне нужно получить позицию курсора после щелчка по изображению, чтобы получить соответствующие пиксельные координаты. Это то, что я сделал до сих пор, которое работает до тех пор, пока я нажимаю на пустую часть фигуры (если я нажимаю на изображение, обратный вызов не запускается).Как получить положение курсора в изображении с помощью Matlab

image(my_image); 
set(gca, 'ButtonDownFcn', @click); 

function click(o, event) 
    pt = get(o, 'CurrentPoint') 
end 

Так после этого, я попытался это один:

image(my_image, 'ButtonDownFcn', @click); 

function click(o, event) 
    pt = get(o, 'CurrentPoint') 
end 

Но тогда, он говорит мне, что класс изображение не содержит поле с именем 'CurrentPoint. Я полагаю, что мне нужно извлечь какие-то топоры из изображения, но я не знаю, как это сделать.

ответ

0

Я должен был решить аналогичную проблему раньше.

Если добавить пустую функцию обратного вызова, как в следующем графическом интерфейсе будет отслеживать положение курсора

function figure1_WindowButtonMotionFcn(~, ~, ~) 

Тогда Figure1 ручка должна иметь свойство currentPoint, которые описывают положение мыши. Если вы пишете функцию обработки события щелчка, который имеет доступ к Figure1 ручки, что-то вроде этого:

image(my_image, 'ButtonwDownFcn', ... 
    @(hObject,eventdata)myGui('click',hObject,eventdata,guidata(hObject)) 

включить следующую строку в нем, чтобы получить доступ к позиции мыши

mouseLocation = get(handles.figure1, 'currentPoint'); 

Тогда вам придется переведите положение мыши в положение пикселя, используя положение осей внутри фигуры.

0

Ну, я нашел решение своей проблемы. Просто нужно указать ось для изображения и получить ее через атрибут «Родитель».

im = image(0, 0, my_image); 
set(im, 'ButtonDownFcn', @click); 

function click(o, event) 
    pt = get(get(o, 'Parent'), 'CurrentPoint') 
end 
Смежные вопросы