2016-07-14 2 views
0

Я создаю многоугольник на image_area в matlab. Я использовал имполи. Но после создания многоугольника. Мне нужно заблокировать возможность перемещения и перетащить impoly (ROI уже создан). Я не знаю, как я должен это делать?Как заблокировать возможность редактирования/перетаскивания impoly в matlab?

Я был бы признателен за любую помощь, пожалуйста.

ответ

0

Вы можете установить 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); 

, что приводит к такой ситуации (с красным прямоугольником для иллюстрации):

enter image description here

+0

Спасибо большое! :) –

+0

уверен! Если это ответит на ваш вопрос, отметьте ответ как принятый (зеленая галочка ниже его оценки), чтобы закрыть поток. благодаря! –

+0

Готово. Спасибо :) Хорошо работает сейчас! –

Смежные вопросы