impoly

(Не рекомендуемый), Создают перемещаемый, многоугольник изменяемого размера

impoly не рекомендуется. Используйте новый Polygon объект вместо этого. Можно также использовать новую функцию удобства создания ROI drawpolygon. Другой опцией является Polyline объект, который позволяет вам создать открытый многоугольник или форму 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 не соединяет последнюю вершину с первой вершиной, создавая открытый многоугольник (или ломаная линия).

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

Свойства

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

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(Не рекомендуемый) объект Move 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 функция, пределы осей автоматически расширяются, когда многоугольник перетаскивается вне степени осей.

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

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

Не рекомендуемый запуск в R2018b

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