Этот пример показывает, как задать пользовательскую функцию ожидания, которая блокирует командную строку MATLAB®, пока вы не закончили располагать прямоугольник.
Отобразите изображение.
imshow('pears.png')
Чертите прямоугольный ROI в левом верхнем угле изображения.
h = drawrectangle('Position',[1 1 100 100]);
Используйте пользовательскую функцию ожидания, чтобы блокировать командную строку MATLAB, в то время как вы взаимодействуете с прямоугольником. Этот пример задает функцию под названием customWait
(заданный в конце примера).
В то время как командная строка блокируется, измените размер и измените местоположение прямоугольника так, чтобы это охватило одну грушу. Дважды кликните на прямоугольнике, чтобы возобновить выполнение функции customWait
. Функция возвращает конечное положение прямоугольника.
pos = customWait(h)
pos = 1×4
262.0000 36.0000 144.0000 145.0000
Это - пользовательская функция ожидания, которая блокирует выполнение программы, когда вы нажимаете ROI. Когда вы закончили взаимодействовать с ROI, функция возвращает положение ROI.
function pos = customWait(hROI) % Listen for mouse clicks on the ROI l = addlistener(hROI,'ROIClicked',@clickCallback); % Block program execution uiwait; % Remove listener delete(l); % Return the current position pos = hROI.Position; end
Эта функция обратного вызова нажатия кнопки возобновляет выполнение программы, когда вы дважды кликаете ROI. Обратите внимание на то, что данные о событиях передаются функции обратного вызова как объект images.roi.ROIClickedEventData
, который позволяет вам задать функции обратного вызова, которые отвечают на различные типы действий. Например, вы могли задать функцию обратного вызова, чтобы возобновить выполнение программы, когда вы нажимаете ROI при нажатии клавиши SHIFT или когда вы кликаете по определенной части ROI, такого как метка.
function clickCallback(~,evt) if strcmp(evt.SelectionType,'double') uiresume; end end
addlistener
| drawrectangle
| images.roi.Rectangle
| uiresume
| uiwait