2016-02-27 40 views
0

我有,我想從MATLAB使用的BoundingBox相同得到每個區域的區域的圖像,這是我使用的BoundingBox的例子:BoundingBox的Matlab的

Ic=regionprops(logical(I3),'BoundingBox'); 

其中I3是我想要的圖像得到每個區域的區域,然後顯示每個區域的區域,我知道的有關BoundingBox的獨特之處在於,在我的情況下,Ic是他們從I3圖像保存區域的變量,它們是103字段或區域,但是我不知道如何在不同的圖中顯示每個區域的區域,我明白這樣做,MATLAB會顯示103個數字,我沒有任何問題。

回答

0

找到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 
+0

關於繪製所有矩形的想法是一個好主意,確切地說,我想要爲每個邊界框創建一個新圖形,但是您建議的代碼只顯示相同的圖像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); 結束 –

+0

@christianbriseño你是說你想要一個數字顯示*的圖像,只是*每個邊框內有什麼? – Suever

+0

是的,我想從BoundingBox的每個字段中獲得一個數字 –

0

關於劇情的想法所有的矩形都是一個好主意,並且,我想要爲每個邊界框創建一個新圖形,但是您建議的代碼僅顯示相同的圖像103次,而不是每個分離的每個圖形,我使用的代碼是:

Ic=regionprops(logical(I3),'BoundingBox'); 
fig = figure; 
him = imshow(I3); 
hold on; colors = hsv(numel(Ic)); 
for k = 1:numel(Ic) 
    fig = figure; 
    him = imshow(I3); 
hold on; 
rectangle('Position', Ic(k).BoundingBox); 
end 
+0

您好,請您向我解釋下面的代碼嗎? rect2rng = @(pos,len)ceil(pos):(ceil(pos)+ len-1); –