Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

impoly

Crear polígono arrastrable y redimensionable

Descripción

Un objeto impoly encapsula un polígono interactivo sobre una imagen.

Puede añadir vértices y ajustar el tamaño y la posición del polígono mediante el ratón. El polígono también tiene un menú contextual que controla aspectos de su apariencia y comportamiento. Para obtener más información, consulte Uso.

Creación

Sintaxis

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

Descripción

h = impoly inicia la colocación interactiva de un polígono en los ejes actuales y devuelve un objeto impoly .

h = impoly(hparent) inicia la colocación interactiva de un polígono en el objeto especificado por hparent.

ejemplo

h = impoly(hparent,position) crea un polígono arrastrable y redimensionable con vértices en las coordenadas definidas por position.

ejemplo

h = impoly(___,Name,Value) especifica pares nombre-valor que controlan el comportamiento del polígono.

Argumentos de entrada

expandir todo

Identificador del objeto primario, especificado como identificador. El elemento primario es normalmente un objeto de ejes, pero también puede ser cualquier otro objeto que pueda ser el elemento primario de un objeto hggroup .

Posición de los vértices del polígono, especificada como una matriz n-por-2. Las dos columnas definen la coordenada xy y, respectivamente, de cada uno de los vértices n .

Argumentos de par nombre-valor

Especifique pares opcionales separados por comas de argumentos Name,Value . Name es el nombre del argumento y Value es el valor correspondiente. Name debe aparecer dentro de comillas simples (' '). Puede especificar varios argumentos de par de nombre y valor en cualquier orden como Name1,Value1,...,NameN,ValueN.

Función de restricción de posición, especificada como el par separado por comas consistente en 'PositionConstraintFcn' y un identificador de función. fcn se llama cada vez que se arrastra el mouse. Puede utilizar esta función para controlar dónde se puede arrastrar el polígono. Consulte la ayuda de la función setPositionConstraintFcn para obtener información acerca de los identificadores de función válidos.

Polígono está cerrado, especificado como el par separado por comas consistente en 'Closed' y true o false. Cuando se establece en true (el valor predeterminado), impoly crea un polígono cerrado, es decir, dibuja una línea recta entre el último vértice especificado y el primer vértice especificado para crear una región cerrada. Cuando Closed es false, impoly no conecta el último vértice con el primer vértice, creando un polígono abierto (o polilínea).

Tipos de datos: logical

Propiedades

expandir todo

El ROI puede ser eliminado, especificado como true o false.

Tipos de datos: logical

Uso

Cuando se llama a impoly con una sintaxis interactiva, el puntero cambia a una cruz de pelos cuando sobre la imagen. Haga clic y arrastre el ratón para definir los vértices del polígono y ajustar el tamaño, la forma y la posición del polígono. De forma predeterminada, impoly dibuja una línea recta que conecta el último punto que dibujó con el primer punto, pero puede controlar este comportamiento mediante el parámetro Closed .

El polígono también admite un menú contextual que puede utilizar para controlar aspectos de su apariencia y comportamiento. Las opciones en el menú contextual varían si se coloca el puntero en un borde del polígono (o en cualquier parte dentro de la región) o en uno de los vértices. La figura muestra el menú contextual cuando el puntero está en el polígono pero no en un vértice.

La tabla enumera los comportamientos interactivos soportados por impoly.

Comportamiento interactivoDescripción
Cerrando el polígono.

Utilice cualquiera de los siguientes mecanismos:

  • Mueva el puntero sobre el vértice inicial del polígono que seleccionó. El puntero cambia a un círculo . Haga clic en cualquier botón del mouse.

  • Haga doble clic en el botón izquierdo del mouse. Esta acción crea un vértice en el punto debajo del ratón y dibuja una línea recta que conecta este vértice con el vértice inicial.

  • Haga clic en el botón derecho del ratón. Esta acción dibuja una línea que conecta el último vértice seleccionado con el vértice inicial; no crea un nuevo vértice.

Añadiendo un nuevo vértice.Mueva el puntero sobre un borde del polígono. Mantenga presionado el Un tecla. La forma del puntero cambia . Haga clic en el botón izquierdo del ratón para crear un nuevo vértice en esa posición en la línea.
Mover un vértice. (remodelación del polígono.)Mueva el puntero sobre un vértice. El puntero cambia a un círculo . Haga clic y arrastre el vértice a su nueva posición.
Borrando un vértice.Mueva el puntero sobre un vértice. La forma cambia a un círculo . Haga clic con el botón derecho y seleccione Delete Vertex en el menú contextual Vertex. Esta acción elimina el vértice y ajusta la forma del polígono, trazando una nueva línea recta entre los dos vértices que eran vecinos del vértice eliminado.
Eliminar el polígonoMueva el puntero dentro del polígono o en una de las líneas que definen el polígono, no en un vértice. Haga clic con el botón derecho y seleccione Delete en el menú contextual. Para quitar esta opción del menú contextual, establezca la propiedad Deletable en false: h = impoly(); h.Deletable = false;
Moviendo el polígono.Mueva el puntero dentro del polígono. El puntero cambia a una forma de flor . Haga clic y arrastre el ratón para mover el polígono.
Cambiar el color del polígonoMueva el puntero dentro del polígono. Haga clic con el botón derecho y seleccione Set Color en el menú contextual.
Recuperando las coordenadas de los vértices Mueva el puntero dentro del polígono. Haga clic con el botón derecho y seleccione Copy Position en el menú contextual. impoly copia una matriz n-por-2 que contiene las coordenadas xy yde cada vértice en el portapapeles. n es el número de vértices que especificó.

Funciones del objeto

Cada objeto impoly admite varios métodos. Escriba methods impoly para ver una lista completa.

addNewPositionCallbackAgregar devolución de llamada de nueva posición al objeto ROI
createMaskCrear máscara dentro de la imagen
deleteDelete handle object
getColorObtener color utilizado para dibujar el objeto ROI
getPositionDevolver la posición actual del objeto ROI
getPositionConstraintFcnControlador de función de retorno a la función de restricción de posición actual
removeNewPositionCallbackQuitar devolución de llamada de nueva posición del objeto ROI
resumeReanudar la ejecución de la línea de comandos MATLAB
setClosedEstablecer el comportamiento de cierre del objeto ROI
setColorEstablecer color utilizado para dibujar el objeto ROI
setConstrainedPositionEstablecer objeto ROI en nueva posición
setPositionMover el objeto ROI a nueva posición
setPositionConstraintFcnDefinir función de restricción de posición del objeto ROI
setVerticesDraggableEstablecer el comportamiento de vértice del objeto ROI
waitBloquear línea de comandos MATLAB hasta que finalice la creación del ROI

Ejemplos

contraer todo

Mostrar una imagen.

imshow('gantrycrane.png')

Dibuja un polígono en la imagen, especificando la ubicación de cinco vértices.

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

Defina el color del polígono en amarillo.

setColor(h,'yellow');

Defina una función para la devolución de llamada de la nueva posición. Esta función muestra la posición actual del polígono cada vez que se mueve.

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

Cree la función que limita el movimiento del polígono utilizando makeConstrainToRectFcn, especificando el límite de la imagen como los límites. Aplicar la función de restricción de límite mediante setPositionConstraintFcn.

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

Imagen de visualización.

figure imshow('gantrycrane.png');

Crea un polígono, especificando varios vértices, pero déjalo inacabado para que puedas terminarlo interactivamente. El ejemplo establece Closed en false para que el polígono quede abierto. Cuando se desplaza el cursor sobre uno de los extremos del polígono, la forma del cursor cambia a un círculo.

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

Completa el polígono. Agarra uno de los extremos de las líneas existentes. Extienda la línea arrastrándola a otra esquina de la forma que desee crear. Luego, mientras coloca el cursor sobre la línea, mantenga pulsada la tecla A para añadir un vértice a la línea. Una vez que se crea el vértice se puede arrastrar en cualquier lugar que desee crear la forma que desee. Continúa arrastrando la línea y añadiendo vértices como quieras. Para obtener más información, consulte Uso.

Sugerencias

Si utiliza impoly con un eje que contiene un objeto Image y no especifica una función de restricción de posición, los usuarios pueden arrastrar el polígono fuera del alcance de la imagen y perder el polígono. Cuando se utiliza con un eje creado por la función plot , los límites de los ejes se expanden automáticamente cuando el polígono se arrastra fuera de la extensión de los ejes.

Introducido en R2007b