Получить координату пикселя, нажав на него в 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
Сюжет или изображение и показать информацию из позиции щелчка, и вы даже можете изменить его код действия.