Используйте ожидают функция после рисования ROI

В этом примере показано, как задать пользовательскую функцию ожидания, которая блокирует командную строку 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

Смотрите также

| | | |

Похожие темы