Получить координату пикселя, нажав на него в Matlab

Это мой первый раз, чтобы создать графический интерфейс Matlab.

Я хочу получить координату пикселя в изображении, щелкнув по нему с помощью matlab, я создал графический интерфейс Matlab, содержащий оси, а оси содержат изображение с помощью следующего кода:

function axes1_CreateFcn(hObject, eventdata, handles)
     axes(hObject);
     I = imread('cameraman.tif');
     imshow(I);

и для ButtonDownFcn чтобы получить координату кликаемого пикселя:

function axes1_ButtonDownFcn(hObject, eventdata, handles)
     handles.xy1 = round(get(handles.axes1,'Currentpoint'));
     x1 = handles.xy1(1,1);
     y1 = handles.xy1(1,2);

проблема в том, что когда я нажимаю на изображение ButtonDownFcn не вызывается, но когда я удаляю код из CreateFcn функция, ButtonDownFcn называется.

Как отобразить изображение и в то же время сохранить ButtonDownFcn за работой?

Спасибо,

2 ответа

Эти функции должны быть установлены. Примерно так будет работать:

set(hFigure,'ButtonDownFcn', @axes1_ButtonDownFcn);

Это просто из-за странного поведения Matlab GUI когда вы выполняете функцию imshow на Axes, это сбрасывает свойства Axes.

Вы видите побочные эффекты от изменений свойств осей, которые незаметно вносятся командами изображения и серфинга. [от Mathworks: здесь ]

Попробуйте этот код, чтобы показать свое изображение:

function axes1_CreateFcn(hObject, eventdata, handles) 
   axes(hObject);
   tag = get(hObject,'Tag');
   I = imread('cameraman.tif');
   imshow(I);
   set(hObject,'Tag',tag);
   set(hFigure,'ButtonDownFcn', @axes1_ButtonDownFcn);
end

и если вы хотите видеть только координаты, используйте Data Cursor инструмент, добавить его в свой GUI от Toolbar Editor и вы используете его для навигации по Axes Сюжет или изображение и показать информацию из позиции щелчка, и вы даже можете изменить его код действия.

Другие вопросы по тегам