impoly

Создайте перемещаемый, полигон изменяемого размера

impoly не рекомендуется. Используйте drawpolygon вместо этого.

Описание

Объект impoly инкапсулирует интерактивный полигон по изображению.

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

Создание

Синтаксис

h = impoly
h = impoly(hparent)
h = impoly(hparent,position)
h = impoly(___,Name,Value)

Описание

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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

Типы данных: логический

Свойства

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

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

Типы данных: логический

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

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

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

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

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

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

  • Переместите указатель через начальную вершину полигона, который вы выбрали. Указатель изменяется на круг. Щелкните любой кнопкой мыши.

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

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

Добавление новой вершины.Переместите указатель через ребро полигона. Нажмите и удержите клавишу A. Форма изменений указателя. Щелкните левой кнопкой мыши, чтобы создать новую вершину в той позиции по строке.
Перемещение вершины. (Изменение полигона.)Переместите указатель через вершину. Указатель изменяется на круг. Перетащите вершину к ее новой позиции.
Удаление вершины.Переместите указатель через вершину. Форма изменяется на круг. Щелкните правой кнопкой и выберите Delete Vertex из контекстного меню вершины. Это действие удаляет вершину и настраивает форму полигона, проводя новую прямую линию между двумя вершинами, которые были соседями удаленной вершины.
Удаление полигонаПереместите указатель в полигоне или на одной из строк, которые задают полигон, не на вершине. Щелкните правой кнопкой и выберите Delete из контекстного меню. Чтобы удалить эту опцию из контекстного меню, установите свойство Deletable на ложь: h = impoly(); h.Deletable = false;
Перемещение полигона.Переместите указатель в полигоне. Указатель изменяется на форму fleur. Перетащите мышь, чтобы переместить полигон.
Изменение цвета полигонаПереместите указатель в полигоне. Щелкните правой кнопкой и выберите Set Color из контекстного меню.
Получение координат вершин Переместите указатель в полигоне. Щелкните правой кнопкой и выберите Copy Position из контекстного меню. 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Переместите объект ROI в новое положение
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, пределы осей автоматически, расширяются, когда полигон перетаскивается вне степени осей.

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

| | | | | |

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