Main Content

imcrop

裁剪图像

说明

以交互方式裁剪图像

注意

交互式语法不支持分类图像。对于分类图像,您必须指定裁剪区域 rect

Icropped = imcrop 创建交互式裁剪图像工具以裁剪当前图窗中显示的灰度、真彩色或二值图像。imcrop 返回裁剪的图像 Icropped

使用此语法和其他交互式语法,裁剪图像工具会阻止 MATLAB® 命令行,直到您完成操作。有关使用裁剪图像工具的详细信息,请参阅交互式行为

示例

Icropped = imcrop(I) 在图窗窗口中显示灰度图像、真彩色图像或二值图像 I,并创建交互式裁剪图像工具以裁剪图像。

Xcropped = imcrop(X,cmap) 使用颜色图 cmap 在图窗中显示索引图像 X,并创建交互式裁剪图像工具以裁剪图像。imcrop 返回裁剪的索引图像 Xcropped,该图像也具有颜色图 cmap

___ = imcrop(h) 创建一个交互式裁剪图像工具来裁剪图形对象 h 中的图像。

通过指定裁剪区域裁剪图像

示例

Icropped = imcrop(I,rect) 根据在裁剪矩形 rect 中指定的位置和维度裁剪图像 I。裁剪的图像包括输入图像中该矩形完全或部分包围的所有像素。

输出图像的实际大小并不始终与 rect 指定的宽度和高度完全一致。例如,假设 rect[20 20 40 30](使用默认的空间坐标系)。指定矩形的左上角是空间 (x,y) 坐标为 (20,20) 的像素的中心。矩形的右下角是空间 (x,y) 坐标为 (60,50) 的像素的中心。生成的输出图像大小为 31×41 像素,而不是 30×40 像素。

示例

Xcropped = imcrop(X,cmap,rect) 根据裁剪矩形 rect 中指定的位置和维度,裁剪具有颜色图 cmap 的索引图像 Ximcrop 返回裁剪的索引图像 Xcropped,该图像也具有颜色图 cmap

___ = imcrop(xref,yref,___) 使用 xrefyref 定义的世界坐标系裁剪输入图像。在 xrefyref 输入参量后,您可以指定包含输入图像 IX 的任何语法的参量。

指定其他输出选项

示例

[___,rectout] = imcrop(___) 还在 rectout 中返回裁剪矩形的位置。您可以使用任何其他语法的输入参量。

[xrefout,yrefout,___] = imcrop(___) 还在 xrefoutyrefout 中返回输入图像的图像范围。

不带输出参量的 imcrop(___) 在新图窗窗口中显示裁剪的图像。此语法不支持分类图像。

示例

全部折叠

将图像读入工作区。

I = imread('llama.jpg');

打开与此图像关联的裁剪图像工具。指定用于存储裁剪的图像的变量。示例包括可选的返回值 rect,其中 imcrop 返回您绘制的矩形的四元素位置向量。

[J,rect] = imcrop(I);

CropImageUsingCropImage InteractiveToolExample_01.png

当您将光标移到图像上方时,它会变为十字准线。裁剪图像工具会阻止命令行,直到您完成操作。

使用鼠标,在要裁剪的图像部分上绘制矩形。通过双击裁剪矩形内部或在上下文菜单中选择裁剪图像来执行裁剪操作。

CropImageUsingCropImage InteractiveToolExample_02.png

裁剪后的图像出现在图窗窗口中。

CropImageUsingCropImage InteractiveToolExample_03.png

裁剪图像工具在返回变量 J 中返回裁剪的区域。变量 rect 是说明您指定的裁剪矩形的四元素位置向量。获取关于返回变量的更多信息。

whos
  Name        Size                  Bytes  Class     Attributes

  I         876x1314x3            3453192  uint8               
  J         413x483x3              598437  uint8               
  rect        1x4                      32  double              

将图像读入工作区。

I = imread('circuit.tif');

裁剪图像,指定裁剪矩形。

I2 = imcrop(I,[75 68 130 112]);

显示原始图像和裁剪的图像。

subplot(1,2,1)
imshow(I)
title('Original Image')
subplot(1,2,2)
imshow(I2)
title('Cropped Image')

读取并显示图像。

I = imread('parkavenue.jpg');
imshow(I)

将目标窗口大小指定为 [宽度, 高度] 形式的二元素向量。

targetSize = [300 600];

创建指定裁剪窗口的空间范围的 Rectangle 对象。

r = centerCropWindow2d(size(I),targetSize);

在空间范围的界限处裁剪图像。显示裁剪的区域。

J = imcrop(I,r);
imshow(J)

将索引图像及其关联的图加载到工作区中。

load trees

裁剪索引图像,指定裁剪矩形。

X2 = imcrop(X,map,[30 30 50 75]);

显示原始图像和裁剪的图像。

subplot(1,2,1)
imshow(X,map)
title('Original Image')
subplot(1,2,2)
imshow(X2,map)
title('Cropped Image')

输入参数

全部折叠

要裁剪的图像,指定为下列项之一。

  • 表示灰度图像的 m×n 数值矩阵

  • 表示真彩色图像的 m×n×3 数值数组

  • 表示二值掩膜的 m×n 逻辑矩阵。

  • 表示标签图像的 m×n 分类矩阵。

    注意

    对于分类输入,您必须指定裁剪矩形 rect。交互式语法不支持分类输入。

当您使用交互式语法时,imcrop 调用 imshow 函数并接受 imshow 接受的任何图像类。

数据类型: single | double | int8 | int16 | uint8 | uint16 | logical | categorical

要裁剪的索引图像,指定为整数矩阵。

数据类型: single | double | int8 | int16 | uint8 | uint16 | logical

与索引图像 X 关联的颜色图,指定为 c×3 数值矩阵。每行是一个三元素 RGB 三元组,指定颜色图的单个颜色的红、绿和蓝分量。数据类型为 singledouble 的值必须在 [0, 1] 范围内。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

裁剪矩形在空间坐标中的大小和位置,指定为 [xmin ymin width height]images.spatialref.Rectangle 对象形式的 4 元素数值向量。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

包含要裁剪的图像的图形对象,指定为 FigurePanelAxesImage 对象。如果 h 是坐标区或图窗,则 impixelregion 将使用 findobj(h,Type="image") 返回的第一个图像。

图像在世界坐标系中的 x 维范围,指定为 [xmin xmax] 形式的二元素数值向量,其中 xmax 大于 xmin。xref 的值设置图像的 XData

图像在世界坐标系中的 y 维范围,指定为 [ymin ymax] 形式的二元素数值向量,其中 ymax 大于 ymin。yref 的值设置图像的 YData

输出参量

全部折叠

裁剪的图像,以数值数组、数值矩阵、逻辑矩阵或分类矩阵形式返回。

  • 如果指定输入图像 I,则输出图像与输入图像具有相同的数据类型。

  • 如果不指定输入图像,则输出图像通常与输入图像具有相同的数据类型。但是,如果输入图像具有数据类型 int16single,则输出图像具有数据类型 double

裁剪的索引图像,以数值矩阵形式返回。

裁剪矩形的大小和位置,以 [xmin ymin width height] 形式的四元素数值向量形式返回。

图像在世界坐标系中的 x 维范围,以 [xmin xmax] 形式的二元素数值向量返回。如果使用 xref 指定图像在世界坐标系中的范围,则 xrefout 等于 xref。否则,xrefout 等于原始图像的 XData

图像在世界坐标系中的 y 维范围,以 [ymin ymax] 形式的二元素数值向量返回。如果使用 yin 指定图像在世界坐标系中的范围,则 yrefout 等于 yin。否则,yrefout 等于原始图像的 YData

详细信息

全部折叠

交互式行为

裁剪图像工具是可移动、可调整大小的矩形,您可以将它放置在图像上方,并使用鼠标以交互方式执行裁剪操作。

如果裁剪图像工具在图窗中处于活动状态,则当您将其移至目标图像上方时,指针会变为十字准线 。使用鼠标,通过点击并拖动鼠标来指定裁剪矩形。您可以使用鼠标移动裁剪矩形或调整其大小。完成裁剪矩形的大小调整和定位后,通过双击鼠标左键创建裁剪的图像。您也可以从上下文菜单中选择裁剪图像。图窗展示了显示上下文菜单的裁剪图像工具。

Crop Image tool displaying a blue rectangle over the region to be cropped and a context menu with options such as "set color" and "fix aspect ratio".

交互式行为描述
删除裁剪图像工具。

BackspaceEscDelete,或在裁剪矩形内右键点击,然后从上下文菜单中选择取消

注意:如果删除 ROI,该函数将返回空值。

调整裁剪图像工具的大小。选择裁剪矩形上的任何调整大小控制柄。指针变为双向箭头 。点击并拖动鼠标以调整裁剪矩形的大小。
移动裁剪图像工具。将指针移到裁剪矩形的边界内。指针变为十字四向箭头 。点击并拖动鼠标以在图像上移动矩形。
更改用于显示裁剪矩形的颜色。在裁剪矩形的边界内右键点击,然后从上下文菜单中选择设置颜色
裁剪图像。

双击鼠标左键或在裁剪矩形的边界内右键点击,并从上下文菜单中选择裁剪图像

检索裁剪矩形的坐标。在裁剪矩形的边界内右键点击,然后从上下文菜单中选择复制位置imcrop 将四元素位置向量 ([xmin ymin width height]) 复制到剪贴板。

扩展功能

版本历史记录

在 R2006a 之前推出

全部展开