Image 在Matlab中从单个图像中裁剪多个零件

Image 在Matlab中从单个图像中裁剪多个零件,image,matlab,crop,Image,Matlab,Crop,我想从图像中裁剪多个部分,使用鼠标指针制作GroundTruth。每个对象中有不同数量的对象,因此我无法在特定次数内运行for循环。但是,我可以使用while循环。但我怎样才能阻止它呢 for i=1:10 [tt bb]=imcrop(img); crop.img{i,:}=tt; crop.bb(i,:)=bb; end 您可以为此使用条件。裁剪完一个图像部分并想要裁剪另一部分后,单击任意鼠标按钮,循环将继续。当您不想裁剪任何其他部分时,按任何键盘按钮,循环将被删

我想从图像中裁剪多个部分,使用鼠标指针制作GroundTruth。每个对象中有不同数量的对象,因此我无法在特定次数内运行
for
循环。但是,我可以使用
while
循环。但我怎样才能阻止它呢

for i=1:10

    [tt bb]=imcrop(img);
    crop.img{i,:}=tt;
    crop.bb(i,:)=bb;
end
您可以为此使用条件。裁剪完一个图像部分并想要裁剪另一部分后,单击任意鼠标按钮,循环将继续。当您不想裁剪任何其他部分时,按任何键盘按钮,循环将被删除

演示代码:

img = imread('peppers.png');
f = figure;
k = 1;
while 1
    [tt, bb] = imcrop(img);
    crop.img{k,:} = tt;
    crop.bb{k,:} = bb;
    if waitforbuttonpress
        break;
    end
    k = k+1;
end

请注意,它要求您的体形窗口处于焦点位置。

如果您想退出,只需按Esc键如何

img = imread('peppers.png');

k = 1;
f = figure;
imshow(img)
while true
    title('Double click to select next area, press Esc when finished')
    [tt, bb] = imcrop(f);
    if isempty(tt)
        close(f)
        break
    end
    crop.img{k,:} = tt;
    crop.bb{k,:} = bb;
    k = k+1;
end

请说明您是如何尝试回答的this@Raha我已经用代码更新了。再次使用
for
循环。我想使用
while
或其他可以停止的功能