找到BoundingBox與regionprops
的結果是由[x, y, width, height]
定義的矩形。您可以使用這些結果使用內置的rectangle
函數繪製矩形。
如果你想要把他們都在同一軸線上,你可以這樣做:
fig = figure;
him = imshow(I3);
hold on;
colors = hsv(numel(Ic));
% Now plot all the rectangles
for k = 1:numel(Ic)
rectangle('Position', Ic(k).BoundingBox, 'EdgeColor', colors(k,:));
end
如果你想爲每一個邊框結果產生一個新圖:
% Anonymous function to help with the conversion from rect
rect2rng = @(pos,len)ceil(pos):(ceil(pos)+len-1);
for k = 1:numel(Ic)
rect = Ic(k).BoundingBox;
subImage = I3(rect2rng(rect(2), rect(4)), rect2rng(rect(1), rect(3)));
fig = figure;
him = imshow(subImage);
title(sprintf('Bounding Box #%d', k));
end
關於繪製所有矩形的想法是一個好主意,確切地說,我想要爲每個邊界框創建一個新圖形,但是您建議的代碼只顯示相同的圖像103次,而不是每個分離的每個圖形,我使用的代碼是: Ic = regionprops(邏輯(I3),'BoundingBox'); fig = figure; 他= imshow(I3); 堅持; colors = hsv(numel(Ic));對於k = 1, :numel(Ic) fig = figure; 他= imshow(I3); 堅持; rectangle('Position',Ic(k).BoundingBox); 結束 –
@christianbriseño你是說你想要一個數字顯示*的圖像,只是*每個邊框內有什麼? – Suever
是的,我想從BoundingBox的每個字段中獲得一個數字 –