MATLAB如何绘制以R2018b开头的多边形?

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-04 21:15:37

创建可定制的多边形ROI

折叠全部页面
 

描述

roi = drawpolygon创建一个 PolygonROI对象,并允许在当前轴上交互式绘制多边形感兴趣区域(ROI)。

要绘制ROI,请将指针放在图像上。光标变为fl形。单击以绘制多边形的顶点,然后拖动以绘制顶点之间的线。要完成ROI,请双击鼠标按钮。有关使用ROI的更多信息,包括键盘快捷键和上下文菜单选项,请参阅 提示

 

注意

drawpoint是用于创建PolygonROI对象的便捷功能 如果直接调用来创建ROI对象,则Polygon必须调用draw对象函数以启用ROI的交互绘制。相反,该 drawpolygon函数创建ROI对象并draw为您调用该对象函数。无论采用哪种方式创建ROI,都可以使用对象属性,对象功能和事件通知来自定义其外观和行为。有关使用这些功能的更多信息,请参见技巧

 

roi = drawpolygon(ax) 在所指定的轴上创建ROI ax

roi = drawpolygon(___,Name,Value) 使用一个或多个名称/值对修改ROI的外观和行为。未指定的名称/值对设置为默认值。

 

例子

全部收缩

交互式创建多边形ROI

将图像读入工作区并显示。

imshow(imread('strawberries.jpg'))

在图像上绘制多边形的ROI。使用“ FaceAlpha”名称/值对使ROI的外观透明。

h = drawpolygon('FaceAlpha',0);

通过设置ROI的“颜色”属性来更改多边形轮廓的颜色。

h.Color = '黄色' ;

 
 

以编程方式创建多边形ROI

将图像读入工作区并显示。

我= imread('baby.jpg');
数字
imshow(I)

使用Position参数指定顶点的位置,在图像上绘制多边形ROI 

my_vertices = [500 500; 400 600; 400 700; 500 800; 600 800; 700 700; 700 600];
h = drawpolygon('Position',my_vertices);

 
 

设置多边形ROI事件的监听器

将图像读入工作区。

我= imread('cameraman.tif');

显示图像。

imshow(I);

在图像上绘制多边形的ROI。

roi = drawpolygon('Color','r');

为ROI移动事件设置侦听器。移动它时,ROI将发送有关这些事件的通知并执行您指定的回调函数。

addlistener(roi,'MovingROI',@ allevents);
addlistener(roi,'ROIMoved',@ allevents);

allevents回调函数显示以前的位置和ROI的当前位置。

函数 allevents(src,evt)
    evname = evt.EventName;
    切换(evname)
         案例 { 'MovingROI' }
            disp([ 'ROI移动到前一个位置:' mat2str(evt.PreviousPosition)]);
            disp([ 'ROI移动当前位置:' mat2str(evt.CurrentPosition)]);
        案例 { 'ROIMoved' }
            disp([ 'ROI已移至上一个位置:' mat2str(evt.PreviousPosition)]);
            disp([ 'ROI移动当前位置:' mat2str(evt.CurrentPosition)]);
    年底
结束
 
 

输入参数

全部收缩

ax— ROI的父轴
gca(默认)| Axes对象 | UIAxes宾语

ROI的父轴,指定为一个Axes对象或一个 UIAxes对象。有关在 UIAxes其中使用ROI(包括重要限制)的信息,请参阅在由App Designer创建的应用程序中使用ROI

名称-值对参数

指定可选的逗号分隔的Name,Value参数Name是参数名称,Value是对应的值。 Name必须出现在引号内。您可以按任意顺序指定几个名称和值对参数Name1,Value1,...,NameN,ValueN

例: roi = drawpolygon('FaceAlpha',0,'FaceSelectable',1);

'Color'— ROI颜色为
蓝色(默认)| ColorSpec

ROI颜色,指定为逗号分隔的一对包括'Color'与一个MATLAB ® ColorSpec (Color Specification) 值。

例: 'green'

例: 'g'

例: [0 1 0]

'Deletable'— 可以通过上下文菜单以交互方式删除ROI 
true(默认)|false

ROI可以通过上下文菜单以交互方式删除,上下文菜单指定为逗号分隔的一对,由'Deletable'true的逻辑值组成 false当该值 true(默认),你可以删除通过上下文菜单的投资回报率。要禁用此上下文菜单项,请设置'Deletable' 为 false当该值设置为时false,您仍然可以通过调用该delete函数,将ROI的句柄指定为输入来删除ROI 

'DrawingArea'— 可以交互放置ROI的轴的面积
'auto'(默认)| 'unlimited'|[x,y,w,h]

您可以在其中交互放置ROI的轴的区域,指定为由逗号分隔的一对'DrawingArea',该对由表中的值和组成 

描述
'auto' 绘图区域是当前轴限制(默认)。
'unlimited' 绘图区域没有边界,可以绘制或拖动ROI以超出轴限制。
[x,y,w,h] 绘图区域被限制为以(xy开始的矩形,其宽度为w,高度为 h

 

'FaceAlpha'— ROI面的透明度
0.2(默认)| 标量

ROI面的透明度,指定为,以逗号分隔,由'FaceAlpha'范围内的标量值 组成 [0,1]当值为时1,ROI面是完全不透明的。当值为时0,ROI面是完全透明的。

'FaceSelectable'— ROI面部可以捕获点击
true(默认)|false

ROI面部可以捕获点击,指定为,以逗号分隔,并由或 'FaceSelectable'组成 (默认)时,ROI面孔可以捕获点击。如果为,则ROI面孔无法捕获点击。truefalsetruefalse

'HandleVisibility'— 父级属性中ROI句柄的可见性Children
'on'(默认)| 'off'|'callback'

Children父级属性中ROI句柄的可见性,指定为由逗号分隔的一对,由'HandleVisibility'组成, 此表中的值之一。

描述
'on' 对象句柄始终可见(默认)。
'off' 对象句柄始终处于隐藏状态。
'callback' 对象句柄在回调或回调调用的函数中可见,但在命令行调用的函数中则不可见。

 

'InteractionsAllowed'— ROI的交互性
'all'(默认)| 'none''translate'|'reshape'

ROI的交互性,指定为逗号分隔的一对,由'InteractionsAllowed'组成, 此表中的值之一。

描述
'all' ROI是完全可交互的(默认)。
'none' ROI是不可交互的,并且没有拖动点可见。
'translate' ROI可以在绘图区域内平移(移动),但不能调整形状。
'reshape' ROI可以在绘图区域内重塑,但不能平移。

 

'Label'— ROI标签
''(默认)| 字符向量 | 

ROI标签,指定为以逗号分隔的一对,由和'Label'和一个字符向量或字符串组成。默认情况下,此属性设置为空数组(''),并且ROI没有标签。

'LabelVisible'— ROI标签的可见性
'on'(默认)| 'hover'|'off'

ROI标签的可见性,指定为由'LabelVisible'以下值之一组成的逗号分隔对

 

描述
'on' 当ROI可见且Label属性为非空(默认)时,标签可见
'hover'

仅当鼠标悬停在ROI上时,标签才可见。

'off' 标签不可见。

 

'LineWidth'— ROI边缘的宽度是
每个屏幕像素的点数的三倍(默认)| 正数值标量

ROI边缘的宽度,指定为逗号分隔的一对,由点'LineWidth'和正数值标量组成 默认值为每个屏幕像素的点数的三倍。

'Parent'— ROI父
Axes对象 | UIAxes宾语

ROI父级,指定为由'Parent' 和AxesUIAxes对象组成的逗号分隔对有关在UIAxes中使用ROI(包括重要限制)的信息,请参阅在由App Designer创建的应用程序中使用ROI

'Position'— ROI 
n -2阵列的位置

ROI的位置,指定为逗号分隔的一对组成的'Position'Ñ -by-2阵列,所述形式的[x1 y1; …; xn yn]每一行指定多边形ROI顶点的位置。绘制或移动ROI时,此值会自动更改。

'Selected'— ROI的选择状态
false(默认)|true

ROI的选择状态,指定为逗号分隔的一对组成的'Selected'和 truefalse您也可以交互设置此值。例如,单击ROI将其选中并将其设置为 true同样,如果您 按住Ctrl键单击 ROI,请取消选择它,并将此值设置为false

'SelectedColor'— 选择时的ROI颜色
'none'(默认)| 颜色规格

选择时的ROI的颜色,指定为,由'SelectedColor'和 组成,以逗号分隔 ColorSpec (Color Specification)如果 'SelectedColor'设置为'none',则的值Color定义所有状态的ROI的颜色,无论是否选中。

例: 'green'

例: 'g'

例: [0 1 0]

'StripeColor'— ROI条纹的颜色
'none'(默认)| ColorSpec

ROI条纹的颜色,指定为以'StripeColor'和MATLAB ColorSpec (Color Specification)组成的逗号分隔对 如果指定'StripeColor',则ROI边缘将被条纹化。条带由和所指定的值的组合组成'Color'

例: 'green'

例: 'g'

例: [0 1 0]

'Tag'— 与ROI 字符向量关联的标签字符串标量

与ROI关联的标签,指定为以逗号分隔的一对,由和 'Tag'和一个字符向量或字符串标量组成。使用标记值通过该findobj 函数在对象的层次结构中查找ROI对象

'UIContextMenu'— 上下文菜单
ContextMenu对象

上下文菜单,指定为逗号分隔的一对,由'UIContextMenu'组成, ContextMenu使用该uicontextmenu函数创建一个对象右键单击ROI时,指定此名称/值对以显示自定义上下文菜单。若要创建自定义上下文菜单,请ContextMenu使用uicontextmenu函数创建一个对象, 然后配置上下文菜单属性。

'UserData'— 与ROI关联的
任何MATLAB数据

与ROI相关的数据,指定为以逗号分隔的对,由 'UserData'和任何MATLAB数据组成。例如,您可以指定标量,向量,矩阵,单元格数组,字符串,字符数组,表或结构。MATLAB不使用此数据。

'Visible'— ROI可见性
'on'(默认)|'off'

ROI可见性,指定为逗号分隔的一对,由组成,'Visible'并且包含 此表中的一个值。

描述
'on' 指定此值以显示ROI(默认)。
'off' 指定此值可隐藏ROI而不删除它。您仍然可以访问隐藏的ROI的属性。

 

输出参数

全部收缩

roi—多边形ROI 
images.roi.Polygon对象

多边形ROI,作为Polygon对象返回

提示

  • ROI支持以下交互,包括键盘快捷键。

    行为键盘快捷键
    使绘制的线以15度角捕捉。 绘图时按住Shift键。
    完成绘制(关闭)ROI。

    双击,这将在指针位置添加一个新顶点,并在第一个顶点上绘制一条线以关闭多边形。

    Enter,这将在指针位置添加一个新顶点,并在第一个顶点上绘制一条线以关闭多边形。

    右键单击,这不会添加新顶点,但会关闭前一个顶点的多边形。

    将指针放在第一个顶点上,然后单击。

    取消绘制ROI。 Esc该函数返回带有空Position字段的有效ROI对象
    将新顶点添加到ROI。

    将指针放在ROI的边缘上,然后双击。

    将指针放在ROI的边缘上,单击鼠标右键,然后从上下文菜单中选择“ 添加顶点 ”。

    删除最近添加的顶点,但继续绘制。 Backspace键该函数将线从前一个顶点重画到指针的当前位置。您只能备份到绘制的第一个顶点。
    调整(调整形状)ROI

    将指针放在顶点上,然后单击并拖动。

    将新顶点添加到ROI,然后单击并拖动。

    删除一个顶点。ROI重新绘制了连接两个相邻顶点的线。

    移动ROI。 将指针放在ROI上(不在顶点上)。指针变为fl形。单击并拖动以移动ROI。
    删除ROI。 将指针放在ROI上的任何位置,然后单击鼠标右键。从上下文菜单中选择“ 删除多边形 ”。您也可以使用delete对象功能删除ROI 
  • 该 drawpolygon函数返回一个PolygonROI对象。创建后,使用对象的这些功能来自定义ROI的外观和行为。

    • 对象属性-ROI对象支持可修改其外观或行为的属性。例如,要将的颜色更改roi为黄色,请设置其Color属性roi.Color = 'yellow'

    • 对象函数-ROI对象支持一组在ROI上运行的对象函数。例如,如果要在创建ROI后暂停MATLAB命令行,请调用wait对象函数。

    • 事件通知-ROI对象发生某些事件(例如,被移动或单击)时,ROI对象可以通知您的代码。要接收这些通知,请使用addlistener对象函数为特定事件设置侦听器。在侦听器中,指定一个事件(例如)'ROIMoved',以及一个在事件发生时执行的回调函数。当ROI通过侦听器通知您的应用程序时,它返回特定于事件的数据。例如,对于'ROIMoved'事件,ROI对象返回其先前位置和当前位置。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!