exponenta event banner

impoly

(не рекомендуется) Создание многоугольника с возможностью перетаскивания и изменения размера

impoly не рекомендуется. Использовать новый Polygon вместо этого объект. Также можно использовать новую функцию удобства создания ROI. drawpolygon. Другой вариант - Polyline объект, позволяющий создать разомкнутый многоугольник или форму полилинии. Дополнительные сведения см. в разделе Вопросы совместимости.

Описание

Один impoly объект инкапсулирует интерактивный многоугольник поверх изображения.

С помощью мыши можно добавить вершины и настроить размер и положение многоугольника. Полигон также имеет контекстное меню, которое управляет аспектами его внешнего вида и поведения. Дополнительные сведения см. в разделе Использование.

Создание

Описание

h = impoly начинает интерактивное размещение многоугольника на текущих осях и возвращает impoly объект.

h = impoly(hparent) начинает интерактивное размещение многоугольника на объекте, указанном hparent.

пример

h = impoly(hparent,position) создает многоугольник с возможностью перетаскивания и изменения размеров с вершинами в координатах, определенных position.

пример

h = impoly(___,Name,Value) задает пары «имя-значение», которые управляют поведением многоугольника.

Входные аргументы

развернуть все

Дескриптор родительского объекта, указанный как дескриптор. Родительский объект обычно является объектом оси, но также может быть любым другим объектом, который может быть родительским для hggroup объект.

Положение вершин многоугольника, заданное как матрица n-by-2. Два столбца определяют координаты x и y, соответственно, каждой из n вершин.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Функция ограничения положения, заданная как разделенная запятыми пара, состоящая из 'PositionConstraintFcn' и дескриптор функции. fcn вызывается при каждом перетаскивании мыши. Эту функцию можно использовать для управления местом перетаскивания многоугольника. См. справку для setPositionConstraintFcn для получения информации о допустимых дескрипторах функций.

Многоугольник замкнут, указан как разделенная запятыми пара, состоящая из 'Closed' и true или false. Если установлено значение true (по умолчанию), impoly создает замкнутый многоугольник, то есть рисует прямую линию между последней заданной вершиной и первой заданной вершиной для создания замкнутой области. Когда Closed является false, impoly не связывает последнюю вершину с первой вершиной, создавая разомкнутый многоугольник (или полилинию).

Типы данных: logical

Свойства

развернуть все

ROI может быть удален, указан как true или false.

Типы данных: logical

Использование

При звонке impoly в интерактивном синтаксисе указатель изменяется на перекрестие, когда он располагается над изображением. Щелкните и перетащите мышь, чтобы определить вершины многоугольника и скорректировать размер, форму и положение многоугольника. По умолчанию impoly рисует прямую линию, соединяющую последнюю нарисованную точку с первой точкой, но управлять этим поведением можно с помощью Closed параметр.

Полигон также поддерживает контекстное меню, которое можно использовать для управления аспектами его внешнего вида и поведения. Выбор в контекстном меню зависит от расположения указателя на ребре многоугольника (или в любом месте внутри области) или на одной из вершин. На рисунке показано контекстное меню, когда указатель находится на многоугольнике, но не на вершине.

В таблице перечислены интерактивные варианты поведения, поддерживаемые impoly.

Интерактивное поведениеОписание
Закрытие полигона.

Используйте любой из следующих механизмов:

  • Наведите указатель на начальную вершину выбранного многоугольника. Указатель изменяется на круг. Нажмите любую кнопку мыши.

  • Дважды щелкните левой кнопкой мыши. Это действие создает вершину в точке под мышью и рисует прямую линию, соединяющую эту вершину с начальной вершиной.

  • Щелкните правой кнопкой мыши. Это действие рисует линию, соединяющую последнюю вершину, выбранную с начальной вершиной; она не создает новую вершину.

Добавление новой вершины.Наведите указатель на кромку многоугольника. Нажмите и удерживайте клавишу A. Форма указателя изменяется. Щелкните левой кнопкой мыши для создания новой вершины в этой позиции на линии.
Перемещение вершины. (Изменение формы многоугольника.)Наведите указатель на вершину. Указатель изменяется на круг. Щелкните и перетащите вершину в новое положение.
Удаление вершины.Наведите указатель на вершину. Форма изменяется на окружность. Щелкните правой кнопкой мыши и выберите «Удалить вершину» в контекстном меню вершины. Это действие удаляет вершину и регулирует форму многоугольника, рисуя новую прямую линию между двумя вершинами, которые были соседями удаленной вершины.
Удаление полигонаПереместите указатель внутрь многоугольника или на одну из линий, определяющих многоугольник, а не на вершину. Щелкните правой кнопкой мыши и выберите в контекстном меню команду «Удалить». Чтобы удалить этот параметр из контекстного меню, установите Deletable свойство false: h = impoly(); h.Deletable = false;
Перемещение многоугольника.Переместите указатель внутрь полигона. Указатель принимает форму флера. Щелкните и перетащите мышь, чтобы переместить многоугольник.
Изменение цвета многоугольникаПереместите указатель внутрь полигона. Щелкните правой кнопкой мыши и выберите в контекстном меню «Задать цвет».
Получение координат вершин Переместите указатель внутрь полигона. Щелкните правой кнопкой мыши и выберите «Копировать положение» в контекстном меню. impoly копирует массив n-by-2, содержащий координаты x и y каждой вершины, в буфер обмена. n - указанное число вершин.

Функции объекта

Каждый impoly объект поддерживает ряд методов. Напечатать methods impoly для просмотра полного списка.

addNewPositionCallbackДобавление обратного вызова новой позиции к объекту ROI
createMaskСоздание маски в изображении
deleteУдалить объект-дескриптор
getColorПолучение цвета, используемого для рисования объекта ROI
getPositionВозврат текущего положения объекта ROI
getPositionConstraintFcnВернуть дескриптор функции в функцию ограничения текущего положения
removeNewPositionCallbackУдаление обратного вызова новой позиции из объекта ROI
resume(Не рекомендуется) Возобновить выполнение командной строки MATLAB
setClosedЗадать поведение закрытия объекта ROI
setColorЗадать цвет, используемый для рисования объекта ROI
setConstrainedPositionУстановка объекта ROI в новое положение
setPosition(Не рекомендуется) Переместить объект окупаемости инвестиций в новое положение
setPositionConstraintFcnУстановка функции ограничения положения объекта ROI
setVerticesDraggableЗадание поведения вершины объекта ROI
wait(Не рекомендуется) Блокировать командную строку MATLAB до завершения создания ROI

Примеры

свернуть все

Отображение изображения.

imshow('gantrycrane.png')

Нарисуйте многоугольник на изображении, указав расположение пяти вершин.

h = impoly(gca,[188,30; 189,142; 93,141; 13,41; 14,29]);

Установите желтый цвет многоугольника.

setColor(h,'yellow');

Определите функцию для обратного вызова новой позиции. Эта функция отображает текущее положение многоугольника при его перемещении.

addNewPositionCallback(h, @(p) title(mat2str(p,3)));

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

fcn = makeConstrainToRectFcn('impoly',get(gca,'XLim'),get(gca,'YLim'));
setPositionConstraintFcn(h,fcn);

Отображение изображения.

figure
imshow('gantrycrane.png');

Создайте многоугольник, задав несколько вершин, но оставьте его незаконченным, чтобы можно было завершить его в интерактивном режиме. Примеры наборов Closed кому false чтобы многоугольник остался открытым. При наведении курсора на одну из конечных точек многоугольника форма курсора изменяется на окружность.

h = impoly(gca,[203,30; 202,142; 294,142],'Closed',false);

Заполните полигон. Захватите один из концов существующих линий. Удлините линию, перетащив ее в другой угол создаваемой фигуры. Затем при наведении курсора на линию нажмите и удерживайте клавишу A, чтобы добавить вершину к линии. После создания вершины ее можно перетащить в любое место, где требуется создать нужную форму. Продолжите перетаскивание линии и добавление вершин. Дополнительные сведения см. в разделе Использование.

Совет

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

Вопросы совместимости

развернуть все

Не рекомендуется начинать с R2018b

Представлен в R2007b