如何在 matlab 中阻止 edit/drag impoly 的可能性?

How to block possibility to edit/drag impoly in matlab?

我在 matlab 中的 image_area 上创建了一个多边形。 我用了impoly。 但是在创建多边形之后。 我需要阻止移动和拖动 impoly 的可能性(ROI 已经创建)。 我不知道该怎么办?

如有任何帮助,我将不胜感激。

您可以将 makeConstrainToRectFcn 设置为包含您的 ROI 的矩形,然后无论何时您尝试移动后者,它都不起作用。您还可以在创建 ROI 后,将 setVerticesDraggable 方法设置为 false 以防止拖动顶点。

示例代码(改编自 Mathworks 的示例):

clc
clear

figure
imshow('gantrycrane.png');
h = impoly(gca, [188,30; 189,142; 93,141; 13,41; 14,29]);

%// Get currentposition
Pos = getPosition(h);

%// Prevent draggable vertices
setVerticesDraggable(h,0);

%// Set up rectangle to prvent movement of ROI
fcn = makeConstrainToRectFcn('impoly', [min(Pos(:,1)) max(Pos(:,1))], [min(Pos(:,2)) max(Pos(:,2))]);

%// Apply function
h.setPositionConstraintFcn(fcn);

造成这种情况(红色方框说明):