Placing a Title on Bounding Box

8 Ansichten (letzte 30 Tage)
Amanda Johnson
Amanda Johnson am 6 Aug. 2014
Beantwortet: thang anh am 2 Mai 2018
I would like to be able to add the title 'Defect' to my bounding box below. I have seen this done in many other applications such as object tracking. But I cannot seem to get it to work. Also, could this be done for multiple bounding boxes. Here is the code I have sof the bounding boxes:
%% Display Bounding Box
figure, imshow(DifferenceOf2),
title('Subtraction of Dialated Edge Template'),
[L ,Num] = bwlabel(DifferenceOf2);
stats = regionprops(DifferenceOf2, 'basic');
stats(1).Area;, ..., stats(end).Area;
stats.Area
allArea = [stats.Area];
s = regionprops(DifferenceOf2, 'all');
s(1)
centroids = cat(2, s.Centroid);
hold on
plot(centroids(:,1), centroids(:,2), 'r*')
for n=1: length(s)
rectangle('Position', s(n).BoundingBox, 'EdgeColor', 'g', 'LineWidth',2), title('Detected Defect')
end
hold off
.
. .
I would like have something like the figure below. I would rather it display the area and/or centroid of the defect as opposed to just 'Defect'.
.
.
. .
Please and Thank you for your help.

Akzeptierte Antwort

Chad Greene
Chad Greene am 6 Aug. 2014
Instead of the title command, consider using text. You can pin the text to some x,y location, then align the text around the pinning point by 'verticalalignment' and 'horizontalalginment' options.
  2 Kommentare
Amanda Johnson
Amanda Johnson am 6 Aug. 2014
Thank you for your help! I was able to get the text to appear in my figure, and changed it to red. I just used the values from the centroid for the X and Y values.
.
hold on
plot(centroids(:,1), centroids(:,2), 'r*')
for n=1: length(s)
rectangle('Position', s(n).BoundingBox, 'EdgeColor', 'g', 'LineWidth',2), title('Defected Detect')
H= text( centroids(:,1) +5, centroids(:,2),'Thank you Chad Greene! ');
set(gcf,'DefaultTextColor','red')
end
hold off
.
Chad Greene
Chad Greene am 6 Aug. 2014
Great, glad it works. Just a note, you don't need to change the text color of the whole figure if you don't want to. You could change the color of just that text bit by
H= text(centroids(:,1) +5, centroids(:,2),'You''re welcome Amanda Johnson','color','red','fontsize',44);
or even
H= text(centroids(:,1) +5, centroids(:,2),'You''re welcome Amanda Johnson');
set(H,'color','red','fontsize',44)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Christopher Berry
Christopher Berry am 6 Aug. 2014
What you are looking for is either annotation. You can also you sprintf to get the string formatted with the information you want. For example,
str = sprintf('Defect at (%0.2f,%0.2f)',32.32443,1.1233)
annotation('textbox',[0.2,0.4,0.1,0.1],'String',str)
For your case, you can the the [x y width height] (given in my example as [0.2,0.4,0.1,0.1]) information for the annotation from your bounding box data.
Take a look at the documentation for annotation here
  5 Kommentare
Amanda Johnson
Amanda Johnson am 6 Aug. 2014
hey hey hey!! making progress... Thank you!
hold on
plot(centroids(:,1), centroids(:,2), 'r*')
for n=1: length(s)
rectangle('Position', s (n).BoundingBox, 'EdgeColor', 'g', 'LineWidth',2), title('Defected Detect')
H= text( centroids(:,1) +5, centroids(:,2), 'Thanks Christopher Berry... This is the actual Centroid! ');
set(gcf,'DefaultTextColor','red');
str = sprintf('Defect at (%0.2f,%0.2f)',centroids(:,1), centroids(:,2))
annotation('textbox',[0.5,0.4,0.1,0.1],'String',str)
end
hold off
.
.
.
Christopher Berry
Christopher Berry am 6 Aug. 2014
Bearbeitet: Christopher Berry am 6 Aug. 2014
Haha, I like your text :)

Melden Sie sich an, um zu kommentieren.


thang anh
thang anh am 2 Mai 2018
thank

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by