Вы можете установить 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);
, что приводит к такой ситуации (с красным прямоугольником для иллюстрации):
Спасибо большое! :) –
уверен! Если это ответит на ваш вопрос, отметьте ответ как принятый (зеленая галочка ниже его оценки), чтобы закрыть поток. благодаря! –
Готово. Спасибо :) Хорошо работает сейчас! –