2015-12-30 2 views
1

Я хотел бы нарисовать прямоугольники на изображении в MATLAB. На каждой итерации мне нужно нарисовать новые прямоугольники и удалить предыдущие.Рисование прямоугольников на изображении внутри цикла

Я прочитал изображение один раз, а затем нарисуйте прямоугольники в цикле, используя

rectangle('Position',[boxPoint(1),boxPoint(2),24,32],'LineWidth',1, 'EdgeColor','g'); 

Однако, в каждой итерации, прямоугольники рисуются поверх старых. Любая идея, как это исправить?

+0

Это здорово. Что вы до сих пор пытались выполнить? – rayryeng

ответ

4

rectangle функция может возвратить дескриптор, который можно впоследствии использовать для его удаления:

% Draw figure with 2 rectangles 
h = figure; 
hold on 
xlim([0,100]) 
ylim([0,100]) 
r(1) = rectangle('Position', [10,10,10,10]); % Make sure keep handles to rectangles 
r(2) = rectangle('Position', [50,50,10,10]); 

delete(r(1)) % Delete a rectangle 
+0

Или вы можете использовать ручку для перемещения прямоугольника в новое положение: 'r (1) .set ('Position', [50,50,10,10]);' – hbaderts

+0

Я сделал что-то похожее на то, что вы сделали для i = 1: всего r (i) = прямоугольник ('Position', [10,10,10,10]); end Затем я попытался удалить (r) позже в коде, но прямоугольники также не были удалены! –

+0

Возможно, вам нужно указать индекс прямоугольника, который вы хотите удалить, т. Е. 'Delete (r (i))'. – RPM

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