1
使用下面的代码,我可以很容易地在给定的图像上绘制一个可拖动的矩形。在图像上绘制多个可拖动的矩形?
figure;
imshow('image.png');
h = imrect;
p = wait(h); % get the rect position
rectangle('Position', p, 'LineWidth',2, 'EdgeColor','r'); % draw here
的问题是:我怎么能在图像上绘制多个拖动矩形?此外,矩形的数量是未知的预手。
P.S.如果我已经绘制了矩形的数量,它将变得更加容易。例如,如果我想提请2个rectangels,下面的代码将工作,即只是把作为众多wait()
:
figure;
imshow('image.png');
h = imrect;
p = wait(h); % get the rect position
rectangle('Position', p, 'LineWidth',2, 'EdgeColor','r'); % draw here
p2 = wait(h); % get the rect position
rectangle('Position', p2, 'LineWidth',2, 'EdgeColor','r'); % draw here
谢谢,它的工作。有关如何将'NextFrame'按钮迁移到'uicontrol'而不是'Done'的想法,因为我想循环播放一个视频并绘制它的每一帧? – herohuyongtao
P.S.在你的解决方案中,在绘制第一个矩形后,“完成”按钮将显示,对于没有矩形的情况有任何想法,即在绘制之前显示“完成”按钮? – herohuyongtao
用位置初始化'imrect',例如'h = imrect(gca,[10 10 100 100]);'在继续放置uicontrol之前,它不会等待用户输入。对于另一个 - 这是一个完整的问题 - 但基本上你需要一个外部循环来处理保存注释图像并提供下一帧(如果有的话)。 – nkjt